diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index a33c9d9..86b7471 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -64,7 +64,7 @@ jobs: matrix: include: - id: linux-x64 - os: ubuntu-latest + os: blacksmith-4vcpu-ubuntu-2404 - id: darwin-x64 os: macos-15-intel - id: darwin-arm64 @@ -109,7 +109,7 @@ jobs: - version-check - publish-npm - build-native-bundles - if: needs.version-check.outputs.should_build_release == 'true' && needs.build-native-bundles.result == 'success' && (needs.publish-npm.result == 'success' || needs.publish-npm.result == 'skipped') + if: always() && needs.version-check.outputs.should_build_release == 'true' && needs.build-native-bundles.result == 'success' && (needs.publish-npm.result == 'success' || needs.publish-npm.result == 'skipped') runs-on: blacksmith-4vcpu-ubuntu-2404 permissions: contents: write diff --git a/bin/feynman.js b/bin/feynman.js old mode 100755 new mode 100644 diff --git a/website/.astro/data-store.json b/website/.astro/data-store.json index bb5517c..274347a 100644 --- a/website/.astro/data-store.json +++ b/website/.astro/data-store.json @@ -1 +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.is\",\"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\":\"everforest-light\",\"dark\":\"everforest-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,52,53,89,90,134,135,161,162,185,186,211,212,243,244,279,280,314,315,343,344,375,376,400,401,435,436,457,458,486,487,518,519,544,545,566,567,590,591,611,612,633,634,654,655,678,679],"agents/verifier",{"id":11,"data":13,"body":18,"filePath":19,"digest":20,"rendered":21,"legacyId":51},{"title":14,"description":15,"section":16,"order":17},"Verifier","Post-process a draft to add inline citations and verify every source URL.","Agents",4,"## 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":22,"metadata":23},"\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":24,"localImagePaths":47,"remoteImagePaths":48,"frontmatter":49,"imagePaths":50},[25,29,32,35,38,41,44],{"depth":26,"slug":27,"text":28},2,"source","Source",{"depth":26,"slug":30,"text":31},"role","Role",{"depth":26,"slug":33,"text":34},"tools","Tools",{"depth":26,"slug":36,"text":37},"default-output","Default Output",{"depth":26,"slug":39,"text":40},"citation-rules","Citation rules",{"depth":26,"slug":42,"text":43},"source-verification","Source verification",{"depth":26,"slug":45,"text":46},"output-contract","Output contract",[],[],{"title":14,"description":15,"section":16,"order":17},[],"agents/verifier.md","agents/reviewer",{"id":52,"data":54,"body":57,"filePath":58,"digest":59,"rendered":60,"legacyId":88},{"title":55,"description":56,"section":16,"order":26},"Reviewer","Simulate a tough but constructive AI research peer reviewer with inline annotations.","## 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":61,"metadata":62},"\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"markdown\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Summary\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">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:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Strengths\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F85552;--shiki-dark:#E67E80\">-\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">S1\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">] ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F85552;--shiki-dark:#E67E80\">-\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">S2\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">] ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Weaknesses\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F85552;--shiki-dark:#E67E80\">-\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">W1\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">] \u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">FATAL:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F85552;--shiki-dark:#E67E80\">-\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">W2\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">] \u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">MAJOR:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F85552;--shiki-dark:#E67E80\">-\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">W3\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">] \u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">MINOR:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Questions for Authors\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F85552;--shiki-dark:#E67E80\">-\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">Q1\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">] ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Verdict\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">Overall assessment and confidence score. Would this pass at [\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">venue\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">]?\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Revision Plan\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"markdown\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Inline Annotations\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">>\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> \"We achieve state-of-the-art results on all benchmarks\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">[\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">W1\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">] FATAL:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> 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:#939F91;--shiki-dark:#859289\">>\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> \"Our approach is novel in combining X with Y\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">[\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">W3\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">] MINOR:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> 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:#939F91;--shiki-dark:#859289\">>\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> \"We use a learning rate of 1e-4\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">[\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\">Q1\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-light-font-weight:bold;--shiki-dark:#D3C6AA;--shiki-dark-font-weight:bold\">]:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">**\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> 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":63,"localImagePaths":84,"remoteImagePaths":85,"frontmatter":86,"imagePaths":87},[64,65,66,67,70,73,77,80,83],{"depth":26,"slug":27,"text":28},{"depth":26,"slug":30,"text":31},{"depth":26,"slug":36,"text":37},{"depth":26,"slug":68,"text":69},"review-checklist","Review checklist",{"depth":26,"slug":71,"text":72},"output-format","Output format",{"depth":74,"slug":75,"text":76},3,"part-1-structured-review","Part 1: Structured Review",{"depth":74,"slug":78,"text":79},"part-2-inline-annotations","Part 2: Inline Annotations",{"depth":26,"slug":81,"text":82},"operating-rules","Operating rules",{"depth":26,"slug":45,"text":46},[],[],{"title":55,"description":56,"section":16,"order":26},[],"agents/reviewer.md","agents/researcher",{"id":89,"data":91,"body":95,"filePath":96,"digest":97,"rendered":98,"legacyId":133},{"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":129,"remoteImagePaths":130,"frontmatter":131,"imagePaths":132},[102,103,104,105,106,109,112,115,116,119,122,125,128],{"depth":26,"slug":27,"text":28},{"depth":26,"slug":30,"text":31},{"depth":26,"slug":33,"text":34},{"depth":26,"slug":36,"text":37},{"depth":26,"slug":107,"text":108},"integrity-commandments","Integrity commandments",{"depth":26,"slug":110,"text":111},"search-strategy","Search strategy",{"depth":26,"slug":113,"text":114},"source-quality","Source quality",{"depth":26,"slug":71,"text":72},{"depth":74,"slug":117,"text":118},"evidence-table","Evidence table",{"depth":74,"slug":120,"text":121},"findings","Findings",{"depth":74,"slug":123,"text":124},"sources","Sources",{"depth":26,"slug":126,"text":127},"context-hygiene","Context hygiene",{"depth":26,"slug":45,"text":46},[],[],{"title":92,"description":93,"section":16,"order":94},[],"agents/researcher.md","agents/writer",{"id":134,"data":136,"body":139,"filePath":140,"digest":141,"rendered":142,"legacyId":160},{"title":137,"description":138,"section":16,"order":74},"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":143,"metadata":144},"\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"markdown\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">#\u003C/span>\u003Cspan style=\"color:#F85552;--shiki-light-font-weight:bold;--shiki-dark:#E67E80;--shiki-dark-font-weight:bold\"> Title\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Executive Summary\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">2-3 paragraph overview of key findings.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Section 1: ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">Detailed findings organized by theme or question.\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Section N: ...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">...\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">##\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-light-font-weight:bold;--shiki-dark:#E69875;--shiki-dark-font-weight:bold\"> Open Questions\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">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":145,"localImagePaths":156,"remoteImagePaths":157,"frontmatter":158,"imagePaths":159},[146,147,148,149,150,151,154,155],{"depth":26,"slug":27,"text":28},{"depth":26,"slug":30,"text":31},{"depth":26,"slug":33,"text":34},{"depth":26,"slug":36,"text":37},{"depth":26,"slug":107,"text":108},{"depth":26,"slug":152,"text":153},"output-structure","Output structure",{"depth":26,"slug":81,"text":82},{"depth":26,"slug":45,"text":46},[],[],{"title":137,"description":138,"section":16,"order":74},[],"agents/writer.md","reference/package-stack",{"id":161,"data":163,"body":167,"filePath":168,"digest":169,"rendered":170,"legacyId":184},{"title":164,"description":165,"section":166,"order":74},"Package Stack","Curated Pi packages bundled with Feynman","Reference","Curated Pi packages bundled with Feynman. The runtime package list lives in `.feynman/settings.json`.\n\n## Core packages\n\nInstalled by default.\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-mermaid` | Diagrams in the TUI. |\n| `@aliou/pi-processes` | Long-running experiments and log tails. |\n| `pi-zotero` | Citation-library workflows. |\n| `pi-schedule-prompt` | Recurring and deferred research jobs. |\n| `@tmustier/pi-ralph-wiggum` | Long-running agent loops for iterative development. |\n\n## Optional packages\n\nInstall on demand with `feynman packages install \u003Cpreset>`.\n\n| Package | Purpose |\n|---------|---------|\n| `pi-generative-ui` | Interactive HTML-style widgets. |\n| `@kaiserlich-dev/pi-session-search` | Indexed session recall and summarize/resume UI. |\n| `@samfp/pi-memory` | Automatic preference and correction memory across sessions. |","src/content/docs/reference/package-stack.md","7c0accc036d20333",{"html":171,"metadata":172},"\u003Cp>Curated Pi packages bundled with Feynman. The runtime package list lives in \u003Ccode>.feynman/settings.json\u003C/code>.\u003C/p>\n\u003Ch2 id=\"core-packages\">Core packages\u003C/h2>\n\u003Cp>Installed by default.\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\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-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>pi-schedule-prompt\u003C/code>\u003C/td>\u003Ctd>Recurring and deferred research jobs.\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>\n\u003Ch2 id=\"optional-packages\">Optional packages\u003C/h2>\n\u003Cp>Install on demand with \u003Ccode>feynman packages install <preset>\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\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Package\u003C/th>\u003Cth>Purpose\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>pi-generative-ui\u003C/code>\u003C/td>\u003Ctd>Interactive HTML-style widgets.\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>@samfp/pi-memory\u003C/code>\u003C/td>\u003Ctd>Automatic preference and correction memory across sessions.\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>",{"headings":173,"localImagePaths":180,"remoteImagePaths":181,"frontmatter":182,"imagePaths":183},[174,177],{"depth":26,"slug":175,"text":176},"core-packages","Core packages",{"depth":26,"slug":178,"text":179},"optional-packages","Optional packages",[],[],{"title":164,"description":165,"section":166,"order":74},[],"reference/package-stack.md","reference/slash-commands",{"id":185,"data":187,"body":190,"filePath":191,"digest":192,"rendered":193,"legacyId":210},{"title":188,"description":189,"section":166,"order":26},"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":194,"metadata":195},"\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":196,"localImagePaths":206,"remoteImagePaths":207,"frontmatter":208,"imagePaths":209},[197,200,203],{"depth":26,"slug":198,"text":199},"research-workflows","Research Workflows",{"depth":26,"slug":201,"text":202},"project--session","Project & Session",{"depth":26,"slug":204,"text":205},"setup","Setup",[],[],{"title":188,"description":189,"section":166,"order":26},[],"reference/slash-commands.md","reference/cli-commands",{"id":211,"data":213,"body":216,"filePath":217,"digest":218,"rendered":219,"legacyId":242},{"title":214,"description":215,"section":166,"order":94},"CLI Commands","Complete reference for Feynman CLI commands","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":220,"metadata":221},"\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":222,"localImagePaths":238,"remoteImagePaths":239,"frontmatter":240,"imagePaths":241},[223,226,229,232,235],{"depth":26,"slug":224,"text":225},"core","Core",{"depth":26,"slug":227,"text":228},"model-management","Model Management",{"depth":26,"slug":230,"text":231},"alphaxiv","AlphaXiv",{"depth":26,"slug":233,"text":234},"utilities","Utilities",{"depth":26,"slug":236,"text":237},"flags","Flags",[],[],{"title":214,"description":215,"section":166,"order":94},[],"reference/cli-commands.md","getting-started/configuration",{"id":243,"data":245,"body":249,"filePath":250,"digest":251,"rendered":252,"legacyId":278},{"title":246,"description":247,"section":248,"order":17},"Configuration","Configure models, search, and runtime options","Getting Started","## 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":253,"metadata":254},"\u003Ch2 id=\"model\">Model\u003C/h2>\n\u003Cp>Set the default model:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> model\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> set\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\"> <\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\">provider:mode\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">l\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">>\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Override at runtime:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --model\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> model\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --thinking\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> search\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --cwd\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> /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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --session-dir\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> /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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --prompt\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"summarize the key findings of 2401.12345\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":255,"localImagePaths":274,"remoteImagePaths":275,"frontmatter":276,"imagePaths":277},[256,259,262,265,268,271],{"depth":26,"slug":257,"text":258},"model","Model",{"depth":26,"slug":260,"text":261},"thinking-level","Thinking level",{"depth":26,"slug":263,"text":264},"web-search","Web search",{"depth":26,"slug":266,"text":267},"working-directory","Working directory",{"depth":26,"slug":269,"text":270},"session-storage","Session storage",{"depth":26,"slug":272,"text":273},"one-shot-mode","One-shot mode",[],[],{"title":246,"description":247,"section":248,"order":17},[],"getting-started/configuration.md","getting-started/installation",{"id":279,"data":281,"body":284,"filePath":285,"digest":286,"rendered":287,"legacyId":313},{"title":282,"description":283,"section":248,"order":94},"Installation","Install Feynman and get started","## Requirements\n\n- macOS, Linux, or WSL\n- `curl` or `wget`\n\n## Recommended install\n\n```bash\ncurl -fsSL https://feynman.is/install | bash\n```\n\n## Verify\n\n```bash\nfeynman --version\n```\n\n## Windows PowerShell\n\n```powershell\nirm https://feynman.is/install.ps1 | iex\n```\n\n## npm fallback\n\nIf you already manage Node yourself:\n\n```bash\nnpm install -g @companion-ai/feynman\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","3c9e114ec05e8393",{"html":288,"metadata":289},"\u003Ch2 id=\"requirements\">Requirements\u003C/h2>\n\u003Cul>\n\u003Cli>macOS, Linux, or WSL\u003C/li>\n\u003Cli>\u003Ccode>curl\u003C/code> or \u003Ccode>wget\u003C/code>\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"recommended-install\">Recommended install\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">curl\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> -fsSL\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> https://feynman.is/install\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\"> |\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> bash\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"verify\">Verify\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --version\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"windows-powershell\">Windows PowerShell\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"powershell\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">irm https:\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">//\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">feynman.is\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">/\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">install.ps1 \u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">|\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> iex\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"npm-fallback\">npm fallback\u003C/h2>\n\u003Cp>If you already manage Node yourself:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npm\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> -g\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> @companion-ai/feynman\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">git\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> clone\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> https://github.com/getcompanion-ai/feynman.git\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\">cd\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> feynman\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npm\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npm\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> run\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> start\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":290,"localImagePaths":309,"remoteImagePaths":310,"frontmatter":311,"imagePaths":312},[291,294,297,300,303,306],{"depth":26,"slug":292,"text":293},"requirements","Requirements",{"depth":26,"slug":295,"text":296},"recommended-install","Recommended install",{"depth":26,"slug":298,"text":299},"verify","Verify",{"depth":26,"slug":301,"text":302},"windows-powershell","Windows PowerShell",{"depth":26,"slug":304,"text":305},"npm-fallback","npm fallback",{"depth":26,"slug":307,"text":308},"local-development","Local Development",[],[],{"title":282,"description":283,"section":248,"order":94},[],"getting-started/installation.md","getting-started/quickstart",{"id":314,"data":316,"body":319,"filePath":320,"digest":321,"rendered":322,"legacyId":342},{"title":317,"description":318,"section":248,"order":26},"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":323,"metadata":324},"\u003Ch2 id=\"first-run\">First run\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> setup\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":325,"localImagePaths":338,"remoteImagePaths":339,"frontmatter":340,"imagePaths":341},[326,329,332,335],{"depth":26,"slug":327,"text":328},"first-run","First run",{"depth":26,"slug":330,"text":331},"ask-naturally","Ask naturally",{"depth":26,"slug":333,"text":334},"use-workflows-directly","Use workflows directly",{"depth":26,"slug":336,"text":337},"output-locations","Output locations",[],[],{"title":317,"description":318,"section":248,"order":26},[],"getting-started/quickstart.md","tools/alphaxiv",{"id":343,"data":345,"body":347,"filePath":348,"digest":349,"rendered":350,"legacyId":374},{"title":231,"description":346,"section":34,"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":351,"metadata":352},"\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":353,"localImagePaths":370,"remoteImagePaths":371,"frontmatter":372,"imagePaths":373},[354,357,358,360,362,364,366,368],{"depth":26,"slug":355,"text":356},"overview","Overview",{"depth":26,"slug":33,"text":34},{"depth":74,"slug":359,"text":359},"alpha_search",{"depth":74,"slug":361,"text":361},"alpha_get_paper",{"depth":74,"slug":363,"text":363},"alpha_ask_paper",{"depth":74,"slug":365,"text":365},"alpha_annotate_paper",{"depth":74,"slug":367,"text":367},"alpha_list_annotations",{"depth":74,"slug":369,"text":369},"alpha_read_code",[],[],{"title":231,"description":346,"section":34,"order":94},[],"tools/alphaxiv.md","tools/preview",{"id":375,"data":377,"body":380,"filePath":381,"digest":382,"rendered":383,"legacyId":399},{"title":378,"description":379,"section":34,"order":17},"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":384,"metadata":385},"\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --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":386,"localImagePaths":395,"remoteImagePaths":396,"frontmatter":397,"imagePaths":398},[387,388,391,392],{"depth":26,"slug":355,"text":356},{"depth":26,"slug":389,"text":390},"usage","Usage",{"depth":26,"slug":292,"text":293},{"depth":26,"slug":393,"text":394},"supported-formats","Supported formats",[],[],{"title":378,"description":379,"section":34,"order":17},[],"tools/preview.md","getting-started/setup",{"id":400,"data":402,"body":404,"filePath":405,"digest":406,"rendered":407,"legacyId":434},{"title":205,"description":403,"section":248,"order":74},"Detailed setup guide for Feynman","## 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\nGlobal macOS installs also try to install pandoc automatically when Homebrew is available. Use the command above to retry manually.\n\n### Optional packages\n\nFeynman keeps the default package set lean so first-run installs stay fast. Install the heavier optional packages only when you need them:\n\n```bash\nfeynman packages list\nfeynman packages install memory\nfeynman packages install session-search\nfeynman packages install generative-ui\nfeynman packages install all-extras\n```\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","ac3f3bae92f2beeb",{"html":408,"metadata":409},"\u003Ch2 id=\"guided-setup\">Guided setup\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> model\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> alpha\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> login\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Check status anytime:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> alpha\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --setup-preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Global macOS installs also try to install pandoc automatically when Homebrew is available. Use the command above to retry manually.\u003C/p>\n\u003Ch3 id=\"optional-packages\">Optional packages\u003C/h3>\n\u003Cp>Feynman keeps the default package set lean so first-run installs stay fast. Install the heavier optional packages only when you need them:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> list\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> memory\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> session-search\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> generative-ui\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> all-extras\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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":410,"localImagePaths":430,"remoteImagePaths":431,"frontmatter":432,"imagePaths":433},[411,414,417,420,423,426,427],{"depth":26,"slug":412,"text":413},"guided-setup","Guided setup",{"depth":74,"slug":415,"text":416},"model-provider-authentication","Model provider authentication",{"depth":74,"slug":418,"text":419},"alphaxiv-login","AlphaXiv login",{"depth":74,"slug":421,"text":422},"web-search-routing","Web search routing",{"depth":74,"slug":424,"text":425},"preview-dependencies","Preview dependencies",{"depth":74,"slug":178,"text":179},{"depth":26,"slug":428,"text":429},"diagnostics","Diagnostics",[],[],{"title":205,"description":403,"section":248,"order":74},[],"getting-started/setup.md","tools/session-search",{"id":435,"data":437,"body":440,"filePath":441,"digest":442,"rendered":443,"legacyId":456},{"title":438,"description":439,"section":34,"order":74},"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":444,"metadata":445},"\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":446,"localImagePaths":452,"remoteImagePaths":453,"frontmatter":454,"imagePaths":455},[447,448,449],{"depth":26,"slug":355,"text":356},{"depth":26,"slug":389,"text":390},{"depth":26,"slug":450,"text":451},"what-it-searches","What it searches",[],[],{"title":438,"description":439,"section":34,"order":74},[],"tools/session-search.md","tools/web-search",{"id":457,"data":459,"body":462,"filePath":463,"digest":464,"rendered":465,"legacyId":485},{"title":460,"description":461,"section":34,"order":26},"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":466,"metadata":467},"\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> search\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> 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":468,"localImagePaths":481,"remoteImagePaths":482,"frontmatter":483,"imagePaths":484},[469,472,475,478],{"depth":26,"slug":470,"text":471},"routing-modes","Routing modes",{"depth":26,"slug":473,"text":474},"default-behavior","Default behavior",{"depth":26,"slug":476,"text":477},"check-current-config","Check current config",{"depth":26,"slug":479,"text":480},"advanced-configuration","Advanced configuration",[],[],{"title":460,"description":461,"section":34,"order":26},[],"tools/web-search.md","workflows/autoresearch",{"id":486,"data":488,"body":493,"filePath":494,"digest":495,"rendered":496,"legacyId":517},{"title":489,"description":490,"section":491,"order":492},"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":497,"metadata":498},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":499,"localImagePaths":513,"remoteImagePaths":514,"frontmatter":515,"imagePaths":516},[500,501,504,507,510],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},"what-it-does","What it does",{"depth":26,"slug":505,"text":506},"tracking","Tracking",{"depth":26,"slug":508,"text":509},"controls","Controls",{"depth":26,"slug":511,"text":512},"example","Example",[],[],{"title":489,"description":490,"section":491,"order":492},[],"workflows/autoresearch.md","workflows/audit",{"id":518,"data":520,"body":523,"filePath":524,"digest":525,"rendered":526,"legacyId":543},{"title":521,"description":522,"section":491,"order":17},"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":527,"metadata":528},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":529,"localImagePaths":539,"remoteImagePaths":540,"frontmatter":541,"imagePaths":542},[530,531,532,535,536],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":533,"text":534},"what-it-checks","What it checks",{"depth":26,"slug":511,"text":512},{"depth":26,"slug":537,"text":538},"output","Output",[],[],{"title":521,"description":522,"section":491,"order":17},[],"workflows/audit.md","workflows/compare",{"id":544,"data":546,"body":550,"filePath":551,"digest":552,"rendered":553,"legacyId":565},{"title":547,"description":548,"section":491,"order":549},"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":554,"metadata":555},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":556,"localImagePaths":561,"remoteImagePaths":562,"frontmatter":563,"imagePaths":564},[557,558,559,560],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":511,"text":512},{"depth":26,"slug":537,"text":538},[],[],{"title":547,"description":548,"section":491,"order":549},[],"workflows/compare.md","workflows/draft",{"id":566,"data":568,"body":572,"filePath":573,"digest":574,"rendered":575,"legacyId":589},{"title":569,"description":570,"section":491,"order":571},"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":576,"metadata":577},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":578,"localImagePaths":585,"remoteImagePaths":586,"frontmatter":587,"imagePaths":588},[579,580,581,584],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":582,"text":583},"structure","Structure",{"depth":26,"slug":511,"text":512},[],[],{"title":569,"description":570,"section":491,"order":571},[],"workflows/draft.md","workflows/deep-research",{"id":590,"data":592,"body":595,"filePath":596,"digest":597,"rendered":598,"legacyId":610},{"title":593,"description":594,"section":491,"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":599,"metadata":600},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":601,"localImagePaths":606,"remoteImagePaths":607,"frontmatter":608,"imagePaths":609},[602,603,604,605],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":511,"text":512},{"depth":26,"slug":537,"text":538},[],[],{"title":593,"description":594,"section":491,"order":94},[],"workflows/deep-research.md","workflows/replication",{"id":611,"data":613,"body":617,"filePath":618,"digest":619,"rendered":620,"legacyId":632},{"title":614,"description":615,"section":491,"order":616},"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- **Docker** — run experiment code inside an isolated Docker container\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","7c11487f428a389a",{"html":621,"metadata":622},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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>Docker\u003C/strong> — run experiment code inside an isolated Docker container\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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":623,"localImagePaths":628,"remoteImagePaths":629,"frontmatter":630,"imagePaths":631},[624,625,626,627],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":511,"text":512},{"depth":26,"slug":537,"text":538},[],[],{"title":614,"description":615,"section":491,"order":616},[],"workflows/replication.md","workflows/literature-review",{"id":633,"data":635,"body":638,"filePath":639,"digest":640,"rendered":641,"legacyId":653},{"title":636,"description":637,"section":491,"order":26},"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":642,"metadata":643},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":644,"localImagePaths":649,"remoteImagePaths":650,"frontmatter":651,"imagePaths":652},[645,646,647,648],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":511,"text":512},{"depth":26,"slug":537,"text":538},[],[],{"title":636,"description":637,"section":491,"order":26},[],"workflows/literature-review.md","workflows/review",{"id":654,"data":656,"body":659,"filePath":660,"digest":661,"rendered":662,"legacyId":677},{"title":657,"description":658,"section":491,"order":74},"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":663,"metadata":664},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":665,"localImagePaths":673,"remoteImagePaths":674,"frontmatter":675,"imagePaths":676},[666,667,668,671,672],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":669,"text":670},"severity-levels","Severity levels",{"depth":26,"slug":511,"text":512},{"depth":26,"slug":537,"text":538},[],[],{"title":657,"description":658,"section":491,"order":74},[],"workflows/review.md","workflows/watch",{"id":678,"data":680,"body":684,"filePath":685,"digest":686,"rendered":687,"legacyId":701},{"title":681,"description":682,"section":491,"order":683},"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":688,"metadata":689},"\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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 everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; 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":690,"localImagePaths":697,"remoteImagePaths":698,"frontmatter":699,"imagePaths":700},[691,692,693,694],{"depth":26,"slug":389,"text":390},{"depth":26,"slug":502,"text":503},{"depth":26,"slug":511,"text":512},{"depth":26,"slug":695,"text":696},"how-it-works","How it works",[],[],{"title":681,"description":682,"section":491,"order":683},[],"workflows/watch.md"] \ No newline at end of file +[["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.is\",\"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\":\"everforest-light\",\"dark\":\"everforest-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,46,47,71,72,100,101,126,127,162,163,194,195,226,227,256,257,288,289,326,327,359,360,388,389,415,416,446,447,474,475,495,496,516,517,546,547,568,569,592,593,617,618,638,639,659,660],"agents/researcher",{"id":11,"data":13,"body":18,"filePath":19,"digest":20,"rendered":21,"legacyId":45},{"title":14,"description":15,"section":16,"order":17},"Researcher","The researcher agent searches, reads, and extracts findings from papers and web sources.","Agents",1,"The researcher is the primary information-gathering agent in Feynman. It searches academic databases and the web, reads papers and articles, extracts key findings, and organizes source material for other agents to synthesize. Most workflows start with the researcher.\n\n## What it does\n\nThe researcher agent handles the entire source discovery and extraction pipeline. It formulates search queries based on your topic, evaluates results for relevance, reads full documents, and extracts structured information including claims, methodology, results, and limitations.\n\nWhen multiple researcher agents are spawned in parallel (which is the default for deep research and literature review), each agent tackles a different angle of the topic. One might search for foundational papers while another looks for recent work that challenges the established view. This parallel approach produces broader coverage than a single sequential search.\n\n## Search strategy\n\nThe researcher uses a multi-source search strategy. For academic topics, it queries AlphaXiv for papers and uses citation chains to discover related work. For applied topics, it searches the web for documentation, blog posts, and code repositories. For most topics, it uses both channels and cross-references findings.\n\nSearch queries are diversified automatically. Rather than running the same query multiple times, the researcher generates 2-4 varied queries that approach the topic from different angles. This catches papers that use different terminology for the same concept and surfaces sources that a single query would miss.\n\n## Source evaluation\n\nNot every search result is worth reading in full. The researcher evaluates results by scanning abstracts and summaries first, then selects the most relevant and authoritative sources for deep reading. It considers publication venue, citation count, recency, and topical relevance when prioritizing sources.\n\n## Extraction\n\nWhen reading a source in depth, the researcher extracts structured data: the main claims and their supporting evidence, methodology details, experimental results, stated limitations, and connections to other work. Each extracted item is tagged with its source location for traceability.\n\n## Used by\n\nThe researcher agent is used by the `/deepresearch`, `/lit`, `/review`, `/audit`, `/replicate`, `/compare`, and `/draft` workflows. It is the most frequently invoked agent in the system. You do not invoke it directly -- it is dispatched automatically by the workflow orchestrator.","src/content/docs/agents/researcher.md","f659d33d6179f4a6",{"html":22,"metadata":23},"\u003Cp>The researcher is the primary information-gathering agent in Feynman. It searches academic databases and the web, reads papers and articles, extracts key findings, and organizes source material for other agents to synthesize. Most workflows start with the researcher.\u003C/p>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>The researcher agent handles the entire source discovery and extraction pipeline. It formulates search queries based on your topic, evaluates results for relevance, reads full documents, and extracts structured information including claims, methodology, results, and limitations.\u003C/p>\n\u003Cp>When multiple researcher agents are spawned in parallel (which is the default for deep research and literature review), each agent tackles a different angle of the topic. One might search for foundational papers while another looks for recent work that challenges the established view. This parallel approach produces broader coverage than a single sequential search.\u003C/p>\n\u003Ch2 id=\"search-strategy\">Search strategy\u003C/h2>\n\u003Cp>The researcher uses a multi-source search strategy. For academic topics, it queries AlphaXiv for papers and uses citation chains to discover related work. For applied topics, it searches the web for documentation, blog posts, and code repositories. For most topics, it uses both channels and cross-references findings.\u003C/p>\n\u003Cp>Search queries are diversified automatically. Rather than running the same query multiple times, the researcher generates 2-4 varied queries that approach the topic from different angles. This catches papers that use different terminology for the same concept and surfaces sources that a single query would miss.\u003C/p>\n\u003Ch2 id=\"source-evaluation\">Source evaluation\u003C/h2>\n\u003Cp>Not every search result is worth reading in full. The researcher evaluates results by scanning abstracts and summaries first, then selects the most relevant and authoritative sources for deep reading. It considers publication venue, citation count, recency, and topical relevance when prioritizing sources.\u003C/p>\n\u003Ch2 id=\"extraction\">Extraction\u003C/h2>\n\u003Cp>When reading a source in depth, the researcher extracts structured data: the main claims and their supporting evidence, methodology details, experimental results, stated limitations, and connections to other work. Each extracted item is tagged with its source location for traceability.\u003C/p>\n\u003Ch2 id=\"used-by\">Used by\u003C/h2>\n\u003Cp>The researcher agent is used by the \u003Ccode>/deepresearch\u003C/code>, \u003Ccode>/lit\u003C/code>, \u003Ccode>/review\u003C/code>, \u003Ccode>/audit\u003C/code>, \u003Ccode>/replicate\u003C/code>, \u003Ccode>/compare\u003C/code>, and \u003Ccode>/draft\u003C/code> workflows. It is the most frequently invoked agent in the system. You do not invoke it directly — it is dispatched automatically by the workflow orchestrator.\u003C/p>",{"headings":24,"localImagePaths":41,"remoteImagePaths":42,"frontmatter":43,"imagePaths":44},[25,29,32,35,38],{"depth":26,"slug":27,"text":28},2,"what-it-does","What it does",{"depth":26,"slug":30,"text":31},"search-strategy","Search strategy",{"depth":26,"slug":33,"text":34},"source-evaluation","Source evaluation",{"depth":26,"slug":36,"text":37},"extraction","Extraction",{"depth":26,"slug":39,"text":40},"used-by","Used by",[],[],{"title":14,"description":15,"section":16,"order":17},[],"agents/researcher.md","agents/reviewer",{"id":46,"data":48,"body":51,"filePath":52,"digest":53,"rendered":54,"legacyId":70},{"title":49,"description":50,"section":16,"order":26},"Reviewer","The reviewer agent evaluates documents with severity-graded academic feedback.","The reviewer agent evaluates documents, papers, and research artifacts with the rigor of an academic peer reviewer. It produces severity-graded feedback covering methodology, claims, writing quality, and reproducibility.\n\n## What it does\n\nThe reviewer reads a document end-to-end and evaluates it against standard academic criteria. It checks whether claims are supported by the presented evidence, whether the methodology is sound and described in sufficient detail, whether the experimental design controls for confounds, and whether the writing is clear and complete.\n\nEach piece of feedback is assigned a severity level. **Critical** issues are fundamental problems that undermine the document's validity, such as a statistical test applied incorrectly or a conclusion not supported by the data. **Major** issues are significant problems that should be addressed, like missing baselines or inadequate ablation studies. **Minor** issues are suggestions for improvement, and **nits** are stylistic or formatting comments.\n\n## Evaluation criteria\n\nThe reviewer evaluates documents across several dimensions:\n\n- **Claims vs. Evidence** -- Does the evidence presented actually support the claims made?\n- **Methodology** -- Is the approach sound? Are there confounds or biases?\n- **Experimental Design** -- Are baselines appropriate? Are ablations sufficient?\n- **Reproducibility** -- Could someone replicate this work from the description alone?\n- **Writing Quality** -- Is the paper clear, well-organized, and free of ambiguity?\n- **Completeness** -- Are limitations discussed? Is related work adequately covered?\n\n## Confidence scoring\n\nThe reviewer provides a confidence score for each finding, indicating how certain it is about the assessment. High-confidence findings are clear-cut issues (a statistical error, a missing citation). Lower-confidence findings are judgment calls (whether a baseline is sufficient, whether more ablations are needed) where reasonable reviewers might disagree.\n\n## Used by\n\nThe reviewer agent is the primary agent in the `/review` workflow. It also contributes to `/audit` (evaluating paper claims against code) and `/compare` (assessing the strength of evidence across sources). Like all agents, it is dispatched automatically by the workflow orchestrator.","src/content/docs/agents/reviewer.md","be8db72eb9155c15",{"html":55,"metadata":56},"\u003Cp>The reviewer agent evaluates documents, papers, and research artifacts with the rigor of an academic peer reviewer. It produces severity-graded feedback covering methodology, claims, writing quality, and reproducibility.\u003C/p>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>The reviewer reads a document end-to-end and evaluates it against standard academic criteria. It checks whether claims are supported by the presented evidence, whether the methodology is sound and described in sufficient detail, whether the experimental design controls for confounds, and whether the writing is clear and complete.\u003C/p>\n\u003Cp>Each piece of feedback is assigned a severity level. \u003Cstrong>Critical\u003C/strong> issues are fundamental problems that undermine the document’s validity, such as a statistical test applied incorrectly or a conclusion not supported by the data. \u003Cstrong>Major\u003C/strong> issues are significant problems that should be addressed, like missing baselines or inadequate ablation studies. \u003Cstrong>Minor\u003C/strong> issues are suggestions for improvement, and \u003Cstrong>nits\u003C/strong> are stylistic or formatting comments.\u003C/p>\n\u003Ch2 id=\"evaluation-criteria\">Evaluation criteria\u003C/h2>\n\u003Cp>The reviewer evaluates documents across several dimensions:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Claims vs. Evidence\u003C/strong> — Does the evidence presented actually support the claims made?\u003C/li>\n\u003Cli>\u003Cstrong>Methodology\u003C/strong> — Is the approach sound? Are there confounds or biases?\u003C/li>\n\u003Cli>\u003Cstrong>Experimental Design\u003C/strong> — Are baselines appropriate? Are ablations sufficient?\u003C/li>\n\u003Cli>\u003Cstrong>Reproducibility\u003C/strong> — Could someone replicate this work from the description alone?\u003C/li>\n\u003Cli>\u003Cstrong>Writing Quality\u003C/strong> — Is the paper clear, well-organized, and free of ambiguity?\u003C/li>\n\u003Cli>\u003Cstrong>Completeness\u003C/strong> — Are limitations discussed? Is related work adequately covered?\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"confidence-scoring\">Confidence scoring\u003C/h2>\n\u003Cp>The reviewer provides a confidence score for each finding, indicating how certain it is about the assessment. High-confidence findings are clear-cut issues (a statistical error, a missing citation). Lower-confidence findings are judgment calls (whether a baseline is sufficient, whether more ablations are needed) where reasonable reviewers might disagree.\u003C/p>\n\u003Ch2 id=\"used-by\">Used by\u003C/h2>\n\u003Cp>The reviewer agent is the primary agent in the \u003Ccode>/review\u003C/code> workflow. It also contributes to \u003Ccode>/audit\u003C/code> (evaluating paper claims against code) and \u003Ccode>/compare\u003C/code> (assessing the strength of evidence across sources). Like all agents, it is dispatched automatically by the workflow orchestrator.\u003C/p>",{"headings":57,"localImagePaths":66,"remoteImagePaths":67,"frontmatter":68,"imagePaths":69},[58,59,62,65],{"depth":26,"slug":27,"text":28},{"depth":26,"slug":60,"text":61},"evaluation-criteria","Evaluation criteria",{"depth":26,"slug":63,"text":64},"confidence-scoring","Confidence scoring",{"depth":26,"slug":39,"text":40},[],[],{"title":49,"description":50,"section":16,"order":26},[],"agents/reviewer.md","agents/writer",{"id":71,"data":73,"body":77,"filePath":78,"digest":79,"rendered":80,"legacyId":99},{"title":74,"description":75,"section":16,"order":76},"Writer","The writer agent produces structured academic prose from research findings.",3,"The writer agent transforms raw research findings into structured, well-organized documents. It specializes in academic prose, producing papers, briefs, surveys, and reports with proper citations, section structure, and narrative flow.\n\n## What it does\n\nThe writer takes source material -- findings from researcher agents, review feedback, comparison matrices -- and synthesizes it into a coherent document. It handles the difficult task of turning a collection of extracted claims and citations into prose that tells a clear story.\n\nThe writer understands academic conventions. Claims are attributed to their sources with inline citations. Methodology sections describe procedures with sufficient detail for reproduction. Results are presented with appropriate qualifiers. Limitations are discussed honestly rather than buried or omitted.\n\n## Writing capabilities\n\nThe writer agent handles several document types:\n\n- **Research Briefs** -- Concise summaries of a topic with key findings and citations, produced by the deep research workflow\n- **Literature Reviews** -- Survey-style documents that map consensus, disagreement, and open questions across the field\n- **Paper Drafts** -- Full academic papers with abstract, introduction, body sections, discussion, and references\n- **Comparison Reports** -- Structured analyses of how multiple sources agree and differ\n- **Summaries** -- Condensed versions of longer documents or multi-source findings\n\n## Citation handling\n\nThe writer maintains citation integrity throughout the document. Every factual claim is linked back to its source. When multiple sources support the same claim, all are cited. When a claim comes from a single source, the writer notes this to help the reader assess confidence. The final reference list includes only works actually cited in the text.\n\n## Iteration\n\nThe writer supports iterative refinement. After producing an initial draft, you can ask Feynman to revise specific sections, add more detail on a subtopic, restructure the argument, or adjust the tone and level of technical detail. Each revision preserves the citation links and document structure.\n\n## Used by\n\nThe writer agent is used by `/deepresearch` (for the final brief), `/lit` (for the review document), `/draft` (as the primary agent), and `/compare` (for the comparison report). It is always the last agent to run in a workflow, producing the final output from the material gathered and evaluated by the researcher and reviewer agents.","src/content/docs/agents/writer.md","4987a7c97b5b9e55",{"html":81,"metadata":82},"\u003Cp>The writer agent transforms raw research findings into structured, well-organized documents. It specializes in academic prose, producing papers, briefs, surveys, and reports with proper citations, section structure, and narrative flow.\u003C/p>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>The writer takes source material — findings from researcher agents, review feedback, comparison matrices — and synthesizes it into a coherent document. It handles the difficult task of turning a collection of extracted claims and citations into prose that tells a clear story.\u003C/p>\n\u003Cp>The writer understands academic conventions. Claims are attributed to their sources with inline citations. Methodology sections describe procedures with sufficient detail for reproduction. Results are presented with appropriate qualifiers. Limitations are discussed honestly rather than buried or omitted.\u003C/p>\n\u003Ch2 id=\"writing-capabilities\">Writing capabilities\u003C/h2>\n\u003Cp>The writer agent handles several document types:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Research Briefs\u003C/strong> — Concise summaries of a topic with key findings and citations, produced by the deep research workflow\u003C/li>\n\u003Cli>\u003Cstrong>Literature Reviews\u003C/strong> — Survey-style documents that map consensus, disagreement, and open questions across the field\u003C/li>\n\u003Cli>\u003Cstrong>Paper Drafts\u003C/strong> — Full academic papers with abstract, introduction, body sections, discussion, and references\u003C/li>\n\u003Cli>\u003Cstrong>Comparison Reports\u003C/strong> — Structured analyses of how multiple sources agree and differ\u003C/li>\n\u003Cli>\u003Cstrong>Summaries\u003C/strong> — Condensed versions of longer documents or multi-source findings\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"citation-handling\">Citation handling\u003C/h2>\n\u003Cp>The writer maintains citation integrity throughout the document. Every factual claim is linked back to its source. When multiple sources support the same claim, all are cited. When a claim comes from a single source, the writer notes this to help the reader assess confidence. The final reference list includes only works actually cited in the text.\u003C/p>\n\u003Ch2 id=\"iteration\">Iteration\u003C/h2>\n\u003Cp>The writer supports iterative refinement. After producing an initial draft, you can ask Feynman to revise specific sections, add more detail on a subtopic, restructure the argument, or adjust the tone and level of technical detail. Each revision preserves the citation links and document structure.\u003C/p>\n\u003Ch2 id=\"used-by\">Used by\u003C/h2>\n\u003Cp>The writer agent is used by \u003Ccode>/deepresearch\u003C/code> (for the final brief), \u003Ccode>/lit\u003C/code> (for the review document), \u003Ccode>/draft\u003C/code> (as the primary agent), and \u003Ccode>/compare\u003C/code> (for the comparison report). It is always the last agent to run in a workflow, producing the final output from the material gathered and evaluated by the researcher and reviewer agents.\u003C/p>",{"headings":83,"localImagePaths":95,"remoteImagePaths":96,"frontmatter":97,"imagePaths":98},[84,85,88,91,94],{"depth":26,"slug":27,"text":28},{"depth":26,"slug":86,"text":87},"writing-capabilities","Writing capabilities",{"depth":26,"slug":89,"text":90},"citation-handling","Citation handling",{"depth":26,"slug":92,"text":93},"iteration","Iteration",{"depth":26,"slug":39,"text":40},[],[],{"title":74,"description":75,"section":16,"order":76},[],"agents/writer.md","agents/verifier",{"id":100,"data":102,"body":106,"filePath":107,"digest":108,"rendered":109,"legacyId":125},{"title":103,"description":104,"section":16,"order":105},"Verifier","The verifier agent cross-checks claims against their cited sources.",4,"The verifier agent is responsible for fact-checking and validation. It cross-references claims against their cited sources, checks code implementations against paper descriptions, and flags unsupported or misattributed assertions.\n\n## What it does\n\nThe verifier performs targeted checks on specific claims rather than reading documents end-to-end like the reviewer. It takes a claim and its cited source, retrieves the source, and determines whether the source actually supports the claim as stated. This catches misattributions (citing a paper that says something different), overstatements (claiming a stronger result than the source reports), and fabrications (claims with no basis in the cited source).\n\nWhen checking code against papers, the verifier examines specific implementation details: hyperparameters, architecture configurations, training procedures, and evaluation metrics. It compares the paper's description to the code's actual behavior, noting discrepancies with exact file paths and line numbers.\n\n## Verification process\n\nThe verifier follows a systematic process for each claim it checks:\n\n1. **Retrieve the source** -- Fetch the cited paper, article, or code file\n2. **Locate the relevant section** -- Find where the source addresses the claim\n3. **Compare** -- Check whether the source supports the claim as stated\n4. **Classify** -- Mark the claim as verified, unsupported, overstated, or contradicted\n5. **Document** -- Record the evidence with exact quotes and locations\n\nThis process is deterministic and traceable. Every verification result includes the specific passage or code that was checked, making it easy to audit the verifier's work.\n\n## Confidence and limitations\n\nThe verifier assigns a confidence level to each verification. Claims that directly quote a source are verified with high confidence. Claims that paraphrase or interpret results are verified with moderate confidence, since reasonable interpretations can differ. Claims about the implications or significance of results are verified with lower confidence, since these involve judgment.\n\nThe verifier is honest about its limitations. When a claim cannot be verified because the source is behind a paywall, the code is not available, or the claim requires domain expertise beyond what the verifier can assess, it says so explicitly rather than guessing.\n\n## Used by\n\nThe verifier agent is used by `/deepresearch` (final fact-checking pass), `/audit` (comparing paper claims to code), and `/replicate` (verifying that the replication plan captures all necessary details). It serves as the quality control step that runs after the researcher and writer have produced their output.","src/content/docs/agents/verifier.md","f9a4b55e40e92190",{"html":110,"metadata":111},"\u003Cp>The verifier agent is responsible for fact-checking and validation. It cross-references claims against their cited sources, checks code implementations against paper descriptions, and flags unsupported or misattributed assertions.\u003C/p>\n\u003Ch2 id=\"what-it-does\">What it does\u003C/h2>\n\u003Cp>The verifier performs targeted checks on specific claims rather than reading documents end-to-end like the reviewer. It takes a claim and its cited source, retrieves the source, and determines whether the source actually supports the claim as stated. This catches misattributions (citing a paper that says something different), overstatements (claiming a stronger result than the source reports), and fabrications (claims with no basis in the cited source).\u003C/p>\n\u003Cp>When checking code against papers, the verifier examines specific implementation details: hyperparameters, architecture configurations, training procedures, and evaluation metrics. It compares the paper’s description to the code’s actual behavior, noting discrepancies with exact file paths and line numbers.\u003C/p>\n\u003Ch2 id=\"verification-process\">Verification process\u003C/h2>\n\u003Cp>The verifier follows a systematic process for each claim it checks:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Retrieve the source\u003C/strong> — Fetch the cited paper, article, or code file\u003C/li>\n\u003Cli>\u003Cstrong>Locate the relevant section\u003C/strong> — Find where the source addresses the claim\u003C/li>\n\u003Cli>\u003Cstrong>Compare\u003C/strong> — Check whether the source supports the claim as stated\u003C/li>\n\u003Cli>\u003Cstrong>Classify\u003C/strong> — Mark the claim as verified, unsupported, overstated, or contradicted\u003C/li>\n\u003Cli>\u003Cstrong>Document\u003C/strong> — Record the evidence with exact quotes and locations\u003C/li>\n\u003C/ol>\n\u003Cp>This process is deterministic and traceable. Every verification result includes the specific passage or code that was checked, making it easy to audit the verifier’s work.\u003C/p>\n\u003Ch2 id=\"confidence-and-limitations\">Confidence and limitations\u003C/h2>\n\u003Cp>The verifier assigns a confidence level to each verification. Claims that directly quote a source are verified with high confidence. Claims that paraphrase or interpret results are verified with moderate confidence, since reasonable interpretations can differ. Claims about the implications or significance of results are verified with lower confidence, since these involve judgment.\u003C/p>\n\u003Cp>The verifier is honest about its limitations. When a claim cannot be verified because the source is behind a paywall, the code is not available, or the claim requires domain expertise beyond what the verifier can assess, it says so explicitly rather than guessing.\u003C/p>\n\u003Ch2 id=\"used-by\">Used by\u003C/h2>\n\u003Cp>The verifier agent is used by \u003Ccode>/deepresearch\u003C/code> (final fact-checking pass), \u003Ccode>/audit\u003C/code> (comparing paper claims to code), and \u003Ccode>/replicate\u003C/code> (verifying that the replication plan captures all necessary details). It serves as the quality control step that runs after the researcher and writer have produced their output.\u003C/p>",{"headings":112,"localImagePaths":121,"remoteImagePaths":122,"frontmatter":123,"imagePaths":124},[113,114,117,120],{"depth":26,"slug":27,"text":28},{"depth":26,"slug":115,"text":116},"verification-process","Verification process",{"depth":26,"slug":118,"text":119},"confidence-and-limitations","Confidence and limitations",{"depth":26,"slug":39,"text":40},[],[],{"title":103,"description":104,"section":16,"order":105},[],"agents/verifier.md","getting-started/configuration",{"id":126,"data":128,"body":132,"filePath":133,"digest":134,"rendered":135,"legacyId":161},{"title":129,"description":130,"section":131,"order":105},"Configuration","Understand Feynman's configuration files and environment variables.","Getting Started","Feynman stores all configuration and state under `~/.feynman/`. This directory is created on first run and contains settings, authentication tokens, session history, and installed packages.\n\n## Directory structure\n\n```\n~/.feynman/\n├── settings.json # Core configuration\n├── web-search.json # Web search routing config\n├── auth/ # OAuth tokens and API keys\n├── sessions/ # Persisted conversation history\n├── packages/ # Installed optional packages\n└── bin/ # Binary (when installed via the native installer)\n```\n\nThe `settings.json` file is the primary configuration file. It is created by `feynman setup` and can be edited manually. A typical configuration looks like:\n\n```json\n{\n \"defaultModel\": \"anthropic:claude-sonnet-4-20250514\",\n \"thinkingLevel\": \"medium\"\n}\n```\n\n## Model configuration\n\nThe `defaultModel` field sets which model is used when you launch Feynman without the `--model` flag. The format is `provider:model-name`. You can change it via the CLI:\n\n```bash\nfeynman model set anthropic:claude-opus-4-20250514\n```\n\nTo see all models you have configured:\n\n```bash\nfeynman model list\n```\n\n## Thinking levels\n\nThe `thinkingLevel` field controls how much reasoning the model does before responding. Available levels are `off`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Higher levels produce more thorough analysis at the cost of latency and token usage. You can override per-session:\n\n```bash\nfeynman --thinking high\n```\n\n## Environment variables\n\nFeynman respects the following environment variables, which take precedence over `settings.json`:\n\n| Variable | Description |\n| --- | --- |\n| `FEYNMAN_MODEL` | Override the default model |\n| `FEYNMAN_HOME` | Override the config directory (default: `~/.feynman`) |\n| `FEYNMAN_THINKING` | Override the thinking level |\n| `ANTHROPIC_API_KEY` | Anthropic API key |\n| `OPENAI_API_KEY` | OpenAI API key |\n| `GOOGLE_API_KEY` | Google AI API key |\n| `TAVILY_API_KEY` | Tavily web search API key |\n| `SERPER_API_KEY` | Serper web search API key |\n\n## Session storage\n\nEach conversation is persisted as a JSON file in `~/.feynman/sessions/`. To start a fresh session:\n\n```bash\nfeynman --new-session\n```\n\nTo point sessions at a different directory (useful for per-project session isolation):\n\n```bash\nfeynman --session-dir ~/myproject/.feynman/sessions\n```\n\n## Diagnostics\n\nRun `feynman doctor` to verify your configuration is valid, check authentication status for all configured providers, and detect missing optional dependencies. The doctor command outputs a checklist showing what is working and what needs attention.","src/content/docs/getting-started/configuration.md","372ab6fd2480315d",{"html":136,"metadata":137},"\u003Cp>Feynman stores all configuration and state under \u003Ccode>~/.feynman/\u003C/code>. This directory is created on first run and contains settings, authentication tokens, session history, and installed packages.\u003C/p>\n\u003Ch2 id=\"directory-structure\">Directory structure\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>~/.feynman/\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├── settings.json # Core configuration\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├── web-search.json # Web search routing config\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├── auth/ # OAuth tokens and API keys\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├── sessions/ # Persisted conversation history\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>├── packages/ # Installed optional packages\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>└── bin/ # Binary (when installed via the native installer)\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The \u003Ccode>settings.json\u003C/code> file is the primary configuration file. It is created by \u003Ccode>feynman setup\u003C/code> and can be edited manually. A typical configuration looks like:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"json\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">defaultModel\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">anthropic:claude-sonnet-4-20250514\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">thinkingLevel\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">medium\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"model-configuration\">Model configuration\u003C/h2>\n\u003Cp>The \u003Ccode>defaultModel\u003C/code> field sets which model is used when you launch Feynman without the \u003Ccode>--model\u003C/code> flag. The format is \u003Ccode>provider:model-name\u003C/code>. You can change it via the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> model\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> set\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> anthropic:claude-opus-4-20250514\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>To see all models you have configured:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> model\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> list\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"thinking-levels\">Thinking levels\u003C/h2>\n\u003Cp>The \u003Ccode>thinkingLevel\u003C/code> field controls how much reasoning the model does before responding. Available levels are \u003Ccode>off\u003C/code>, \u003Ccode>minimal\u003C/code>, \u003Ccode>low\u003C/code>, \u003Ccode>medium\u003C/code>, \u003Ccode>high\u003C/code>, and \u003Ccode>xhigh\u003C/code>. Higher levels produce more thorough analysis at the cost of latency and token usage. You can override per-session:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --thinking\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> high\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"environment-variables\">Environment variables\u003C/h2>\n\u003Cp>Feynman respects the following environment variables, which take precedence over \u003Ccode>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\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Variable\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>FEYNMAN_MODEL\u003C/code>\u003C/td>\u003Ctd>Override the default model\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>FEYNMAN_HOME\u003C/code>\u003C/td>\u003Ctd>Override the config directory (default: \u003Ccode>~/.feynman\u003C/code>)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>FEYNMAN_THINKING\u003C/code>\u003C/td>\u003Ctd>Override the thinking level\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>ANTHROPIC_API_KEY\u003C/code>\u003C/td>\u003Ctd>Anthropic API key\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>OPENAI_API_KEY\u003C/code>\u003C/td>\u003Ctd>OpenAI API key\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>GOOGLE_API_KEY\u003C/code>\u003C/td>\u003Ctd>Google AI API key\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>TAVILY_API_KEY\u003C/code>\u003C/td>\u003Ctd>Tavily web search API key\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>SERPER_API_KEY\u003C/code>\u003C/td>\u003Ctd>Serper web search API key\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"session-storage\">Session storage\u003C/h2>\n\u003Cp>Each conversation is persisted as a JSON file in \u003Ccode>~/.feynman/sessions/\u003C/code>. To start a fresh session:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --new-session\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>To point sessions at a different directory (useful for per-project session isolation):\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --session-dir\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> ~/myproject/.feynman/sessions\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"diagnostics\">Diagnostics\u003C/h2>\n\u003Cp>Run \u003Ccode>feynman doctor\u003C/code> to verify your configuration is valid, check authentication status for all configured providers, and detect missing optional dependencies. The doctor command outputs a checklist showing what is working and what needs attention.\u003C/p>",{"headings":138,"localImagePaths":157,"remoteImagePaths":158,"frontmatter":159,"imagePaths":160},[139,142,145,148,151,154],{"depth":26,"slug":140,"text":141},"directory-structure","Directory structure",{"depth":26,"slug":143,"text":144},"model-configuration","Model configuration",{"depth":26,"slug":146,"text":147},"thinking-levels","Thinking levels",{"depth":26,"slug":149,"text":150},"environment-variables","Environment variables",{"depth":26,"slug":152,"text":153},"session-storage","Session storage",{"depth":26,"slug":155,"text":156},"diagnostics","Diagnostics",[],[],{"title":129,"description":130,"section":131,"order":105},[],"getting-started/configuration.md","getting-started/installation",{"id":162,"data":164,"body":167,"filePath":168,"digest":169,"rendered":170,"legacyId":193},{"title":165,"description":166,"section":131,"order":17},"Installation","Install Feynman on macOS, Linux, or Windows using the one-line installer or npm.","Feynman ships as a standalone binary for macOS and Linux, and as an npm package for all platforms including Windows. The recommended approach is the one-line installer, which downloads a prebuilt native binary with zero dependencies.\n\n## One-line installer (recommended)\n\nOn **macOS or Linux**, open a terminal and run:\n\n```bash\ncurl -fsSL https://feynman.is/install | bash\n```\n\nThe installer detects your OS and architecture automatically. On macOS it supports both Intel and Apple Silicon. On Linux it supports x64 and arm64. The binary is installed to `~/.feynman/bin` and added to your `PATH`.\n\nOn **Windows**, open PowerShell as Administrator and run:\n\n```powershell\nirm https://feynman.is/install.ps1 | iex\n```\n\nThis installs the native Windows binary and adds Feynman to your user `PATH`. You can re-run either installer at any time to update to the latest version.\n\n## npm / npx\n\nIf you already have Node.js 18+ installed, you can install Feynman globally via npm:\n\n```bash\nnpm install -g @companion-ai/feynman\n```\n\nOr run it directly without installing:\n\n```bash\nnpx @companion-ai/feynman\n```\n\nThe npm distribution bundles the same core runtime as the native installer but depends on Node.js being present on your system. The native installer is preferred because it ships a self-contained binary with faster startup.\n\n## Post-install setup\n\nAfter installation, run the guided setup wizard to configure your model provider and API keys:\n\n```bash\nfeynman setup\n```\n\nThis walks you through selecting a default model, authenticating with your provider, and optionally installing extra packages for features like web search and document preview. See the [Setup guide](/docs/getting-started/setup) for a detailed walkthrough.\n\n## Verifying the installation\n\nConfirm Feynman is installed and accessible:\n\n```bash\nfeynman --version\n```\n\nIf you see a version number, you are ready to go. Run `feynman doctor` at any time to diagnose configuration issues, missing dependencies, or authentication problems.\n\n## Local development\n\nFor contributing or running Feynman from source:\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","2d312017c55a3277",{"html":171,"metadata":172},"\u003Cp>Feynman ships as a standalone binary for macOS and Linux, and as an npm package for all platforms including Windows. The recommended approach is the one-line installer, which downloads a prebuilt native binary with zero dependencies.\u003C/p>\n\u003Ch2 id=\"one-line-installer-recommended\">One-line installer (recommended)\u003C/h2>\n\u003Cp>On \u003Cstrong>macOS or Linux\u003C/strong>, open a terminal and run:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">curl\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> -fsSL\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> https://feynman.is/install\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\"> |\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> bash\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The installer detects your OS and architecture automatically. On macOS it supports both Intel and Apple Silicon. On Linux it supports x64 and arm64. The binary is installed to \u003Ccode>~/.feynman/bin\u003C/code> and added to your \u003Ccode>PATH\u003C/code>.\u003C/p>\n\u003Cp>On \u003Cstrong>Windows\u003C/strong>, open PowerShell as Administrator and run:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"powershell\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">irm https:\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">//\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">feynman.is\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">/\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">install.ps1 \u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">|\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> iex\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This installs the native Windows binary and adds Feynman to your user \u003Ccode>PATH\u003C/code>. You can re-run either installer at any time to update to the latest version.\u003C/p>\n\u003Ch2 id=\"npm--npx\">npm / npx\u003C/h2>\n\u003Cp>If you already have Node.js 18+ installed, you can install Feynman globally via npm:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npm\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> -g\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> @companion-ai/feynman\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Or run it directly without installing:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npx\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> @companion-ai/feynman\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The npm distribution bundles the same core runtime as the native installer but depends on Node.js being present on your system. The native installer is preferred because it ships a self-contained binary with faster startup.\u003C/p>\n\u003Ch2 id=\"post-install-setup\">Post-install setup\u003C/h2>\n\u003Cp>After installation, run the guided setup wizard to configure your model provider and API keys:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> setup\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This walks you through selecting a default model, authenticating with your provider, and optionally installing extra packages for features like web search and document preview. See the \u003Ca href=\"/docs/getting-started/setup\">Setup guide\u003C/a> for a detailed walkthrough.\u003C/p>\n\u003Ch2 id=\"verifying-the-installation\">Verifying the installation\u003C/h2>\n\u003Cp>Confirm Feynman is installed and accessible:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --version\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>If you see a version number, you are ready to go. Run \u003Ccode>feynman doctor\u003C/code> at any time to diagnose configuration issues, missing dependencies, or authentication problems.\u003C/p>\n\u003Ch2 id=\"local-development\">Local development\u003C/h2>\n\u003Cp>For contributing or running Feynman from source:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">git\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> clone\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> https://github.com/getcompanion-ai/feynman.git\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\">cd\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> feynman\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npm\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">npm\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> run\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> start\u003C/span>\u003C/span>\u003C/code>\u003C/pre>",{"headings":173,"localImagePaths":189,"remoteImagePaths":190,"frontmatter":191,"imagePaths":192},[174,177,180,183,186],{"depth":26,"slug":175,"text":176},"one-line-installer-recommended","One-line installer (recommended)",{"depth":26,"slug":178,"text":179},"npm--npx","npm / npx",{"depth":26,"slug":181,"text":182},"post-install-setup","Post-install setup",{"depth":26,"slug":184,"text":185},"verifying-the-installation","Verifying the installation",{"depth":26,"slug":187,"text":188},"local-development","Local development",[],[],{"title":165,"description":166,"section":131,"order":17},[],"getting-started/installation.md","getting-started/quickstart",{"id":194,"data":196,"body":199,"filePath":200,"digest":201,"rendered":202,"legacyId":225},{"title":197,"description":198,"section":131,"order":26},"Quick Start","Get up and running with Feynman in under five minutes.","This guide assumes you have already [installed Feynman](/docs/getting-started/installation) and run `feynman setup`. If not, start there first.\n\n## Launch the REPL\n\nStart an interactive session by running:\n\n```bash\nfeynman\n```\n\nYou are dropped into a conversational REPL where you can ask research questions, run workflows, and interact with agents in natural language. Type your question and press Enter.\n\n## Run a one-shot prompt\n\nIf you want a quick answer without entering the REPL, use the `--prompt` flag:\n\n```bash\nfeynman --prompt \"Summarize the key findings of Attention Is All You Need\"\n```\n\nFeynman processes the prompt, prints the response, and exits. This is useful for scripting or piping output into other tools.\n\n## Start a deep research session\n\nDeep research is the flagship workflow. It dispatches multiple agents to search, read, cross-reference, and synthesize information from academic papers and the web:\n\n```bash\nfeynman\n> /deepresearch What are the current approaches to mechanistic interpretability in LLMs?\n```\n\nThe agents collaborate to produce a structured research report with citations, key findings, and open questions. The full report is saved to your session directory for later reference.\n\n## Work with files\n\nFeynman can read and write files in your working directory. Point it at a paper or codebase for targeted analysis:\n\n```bash\nfeynman --cwd ~/papers\n> /review arxiv:2301.07041\n```\n\nYou can also ask Feynman to draft documents, audit code, or compare multiple sources by referencing local files directly in your prompts.\n\n## Explore slash commands\n\nType `/help` inside the REPL to see all available slash commands. Each command maps to a workflow or utility, such as `/deepresearch`, `/review`, `/draft`, `/watch`, and more. You can also run any workflow directly from the CLI:\n\n```bash\nfeynman deepresearch \"transformer architectures for protein folding\"\n```\n\nSee the [Slash Commands reference](/docs/reference/slash-commands) for the complete list.","src/content/docs/getting-started/quickstart.md","1b6feb1130945a05",{"html":203,"metadata":204},"\u003Cp>This guide assumes you have already \u003Ca href=\"/docs/getting-started/installation\">installed Feynman\u003C/a> and run \u003Ccode>feynman setup\u003C/code>. If not, start there first.\u003C/p>\n\u003Ch2 id=\"launch-the-repl\">Launch the REPL\u003C/h2>\n\u003Cp>Start an interactive session by running:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You are dropped into a conversational REPL where you can ask research questions, run workflows, and interact with agents in natural language. Type your question and press Enter.\u003C/p>\n\u003Ch2 id=\"run-a-one-shot-prompt\">Run a one-shot prompt\u003C/h2>\n\u003Cp>If you want a quick answer without entering the REPL, use the \u003Ccode>--prompt\u003C/code> flag:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --prompt\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"Summarize the key findings of Attention Is All You Need\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Feynman processes the prompt, prints the response, and exits. This is useful for scripting or piping output into other tools.\u003C/p>\n\u003Ch2 id=\"start-a-deep-research-session\">Start a deep research session\u003C/h2>\n\u003Cp>Deep research is the flagship workflow. It dispatches multiple agents to search, read, cross-reference, and synthesize information from academic papers and the web:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">>\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> /deepresearch What are the current approaches to mechanistic interpretability in LLMs\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">?\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The agents collaborate to produce a structured research report with citations, key findings, and open questions. The full report is saved to your session directory for later reference.\u003C/p>\n\u003Ch2 id=\"work-with-files\">Work with files\u003C/h2>\n\u003Cp>Feynman can read and write files in your working directory. Point it at a paper or codebase for targeted analysis:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --cwd\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> ~/papers\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">>\u003C/span>\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\"> /review arxiv:2301.07041\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You can also ask Feynman to draft documents, audit code, or compare multiple sources by referencing local files directly in your prompts.\u003C/p>\n\u003Ch2 id=\"explore-slash-commands\">Explore slash commands\u003C/h2>\n\u003Cp>Type \u003Ccode>/help\u003C/code> inside the REPL to see all available slash commands. Each command maps to a workflow or utility, such as \u003Ccode>/deepresearch\u003C/code>, \u003Ccode>/review\u003C/code>, \u003Ccode>/draft\u003C/code>, \u003Ccode>/watch\u003C/code>, and more. You can also run any workflow directly from the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> deepresearch\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"transformer architectures for protein folding\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>See the \u003Ca href=\"/docs/reference/slash-commands\">Slash Commands reference\u003C/a> for the complete list.\u003C/p>",{"headings":205,"localImagePaths":221,"remoteImagePaths":222,"frontmatter":223,"imagePaths":224},[206,209,212,215,218],{"depth":26,"slug":207,"text":208},"launch-the-repl","Launch the REPL",{"depth":26,"slug":210,"text":211},"run-a-one-shot-prompt","Run a one-shot prompt",{"depth":26,"slug":213,"text":214},"start-a-deep-research-session","Start a deep research session",{"depth":26,"slug":216,"text":217},"work-with-files","Work with files",{"depth":26,"slug":219,"text":220},"explore-slash-commands","Explore slash commands",[],[],{"title":197,"description":198,"section":131,"order":26},[],"getting-started/quickstart.md","reference/package-stack",{"id":226,"data":228,"body":232,"filePath":233,"digest":234,"rendered":235,"legacyId":255},{"title":229,"description":230,"section":231,"order":76},"Package Stack","Core and optional Pi packages bundled with Feynman.","Reference","Feynman is built on the Pi runtime and uses curated Pi packages for its capabilities. Packages are managed through `feynman packages` commands and configured in `~/.feynman/settings.json`.\n\n## Core packages\n\nThese are installed by default with every Feynman installation. They provide the foundation for all research workflows.\n\n| Package | Purpose |\n| --- | --- |\n| `pi-subagents` | Parallel agent spawning for literature gathering and task decomposition. Powers the multi-agent workflows |\n| `pi-btw` | Fast side-thread `/btw` conversations without interrupting the main research run |\n| `pi-docparser` | Parse PDFs, Office documents, spreadsheets, and images for content extraction |\n| `pi-web-access` | Web browsing, GitHub access, PDF fetching, and media retrieval |\n| `pi-markdown-preview` | Render Markdown and LaTeX-heavy research documents as polished HTML/PDF |\n| `@walterra/pi-charts` | Generate charts and quantitative visualizations from data |\n| `pi-mermaid` | Render Mermaid diagrams in the terminal UI |\n| `@aliou/pi-processes` | Manage long-running experiments, background tasks, and log tailing |\n| `pi-zotero` | Integration with Zotero for citation library management |\n| `pi-schedule-prompt` | Schedule recurring and deferred research jobs. Powers the `/watch` workflow |\n| `@tmustier/pi-ralph-wiggum` | Long-running agent loops for iterative development. Powers `/autoresearch` |\n\nThese packages are updated together when you run `feynman update`. You do not need to install them individually.\n\n## Optional packages\n\nInstall on demand with `feynman packages install \u003Cpreset>`. These extend Feynman with capabilities that not every user needs.\n\n| Package | Preset | Purpose |\n| --- | --- | --- |\n| `pi-generative-ui` | `generative-ui` | Interactive HTML-style widgets for rich output |\n| `@kaiserlich-dev/pi-session-search` | `session-search` | Indexed session recall with summarize and resume UI. Powers `/search` |\n| `@samfp/pi-memory` | `memory` | Automatic preference and correction memory across sessions |\n\n## Installing and managing packages\n\nList all available packages and their install status:\n\n```bash\nfeynman packages list\n```\n\nInstall a specific optional preset:\n\n```bash\nfeynman packages install session-search\nfeynman packages install memory\nfeynman packages install generative-ui\n```\n\nInstall all optional packages at once:\n\n```bash\nfeynman packages install all-extras\n```\n\n## Updating packages\n\nUpdate all installed packages to their latest versions:\n\n```bash\nfeynman update\n```\n\nUpdate a specific package:\n\n```bash\nfeynman update pi-subagents\n```\n\nRunning `feynman update` without arguments updates everything. Pass a specific package name to update just that one. Updates are safe and preserve your configuration.","src/content/docs/reference/package-stack.md","44b57303b320cb13",{"html":236,"metadata":237},"\u003Cp>Feynman is built on the Pi runtime and uses curated Pi packages for its capabilities. Packages are managed through \u003Ccode>feynman packages\u003C/code> commands and configured in \u003Ccode>~/.feynman/settings.json\u003C/code>.\u003C/p>\n\u003Ch2 id=\"core-packages\">Core packages\u003C/h2>\n\u003Cp>These are installed by default with every Feynman installation. They provide the foundation for all research workflows.\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\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 agent spawning for literature gathering and task decomposition. Powers the multi-agent workflows\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 research run\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-docparser\u003C/code>\u003C/td>\u003Ctd>Parse PDFs, Office documents, spreadsheets, and images for content extraction\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-web-access\u003C/code>\u003C/td>\u003Ctd>Web browsing, GitHub access, PDF fetching, and media retrieval\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-markdown-preview\u003C/code>\u003C/td>\u003Ctd>Render Markdown and LaTeX-heavy research documents as polished HTML/PDF\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@walterra/pi-charts\u003C/code>\u003C/td>\u003Ctd>Generate charts and quantitative visualizations from data\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-mermaid\u003C/code>\u003C/td>\u003Ctd>Render Mermaid diagrams in the terminal UI\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@aliou/pi-processes\u003C/code>\u003C/td>\u003Ctd>Manage long-running experiments, background tasks, and log tailing\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-zotero\u003C/code>\u003C/td>\u003Ctd>Integration with Zotero for citation library management\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>pi-schedule-prompt\u003C/code>\u003C/td>\u003Ctd>Schedule recurring and deferred research jobs. Powers the \u003Ccode>/watch\u003C/code> workflow\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@tmustier/pi-ralph-wiggum\u003C/code>\u003C/td>\u003Ctd>Long-running agent loops for iterative development. Powers \u003Ccode>/autoresearch\u003C/code>\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cp>These packages are updated together when you run \u003Ccode>feynman update\u003C/code>. You do not need to install them individually.\u003C/p>\n\u003Ch2 id=\"optional-packages\">Optional packages\u003C/h2>\n\u003Cp>Install on demand with \u003Ccode>feynman packages install <preset>\u003C/code>. These extend Feynman with capabilities that not every user needs.\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\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Package\u003C/th>\u003Cth>Preset\u003C/th>\u003Cth>Purpose\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>pi-generative-ui\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>generative-ui\u003C/code>\u003C/td>\u003Ctd>Interactive HTML-style widgets for rich output\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@kaiserlich-dev/pi-session-search\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>session-search\u003C/code>\u003C/td>\u003Ctd>Indexed session recall with summarize and resume UI. Powers \u003Ccode>/search\u003C/code>\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>@samfp/pi-memory\u003C/code>\u003C/td>\u003Ctd>\u003Ccode>memory\u003C/code>\u003C/td>\u003Ctd>Automatic preference and correction memory across sessions\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"installing-and-managing-packages\">Installing and managing packages\u003C/h2>\n\u003Cp>List all available packages and their install status:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> list\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Install a specific optional preset:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> session-search\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> memory\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> generative-ui\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Install all optional packages at once:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> all-extras\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"updating-packages\">Updating packages\u003C/h2>\n\u003Cp>Update all installed packages to their latest versions:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> update\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Update a specific package:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> update\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> pi-subagents\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Running \u003Ccode>feynman update\u003C/code> without arguments updates everything. Pass a specific package name to update just that one. Updates are safe and preserve your configuration.\u003C/p>",{"headings":238,"localImagePaths":251,"remoteImagePaths":252,"frontmatter":253,"imagePaths":254},[239,242,245,248],{"depth":26,"slug":240,"text":241},"core-packages","Core packages",{"depth":26,"slug":243,"text":244},"optional-packages","Optional packages",{"depth":26,"slug":246,"text":247},"installing-and-managing-packages","Installing and managing packages",{"depth":26,"slug":249,"text":250},"updating-packages","Updating packages",[],[],{"title":229,"description":230,"section":231,"order":76},[],"reference/package-stack.md","getting-started/setup",{"id":256,"data":258,"body":261,"filePath":262,"digest":263,"rendered":264,"legacyId":287},{"title":259,"description":260,"section":131,"order":76},"Setup","Walk through the guided setup wizard to configure Feynman.","The `feynman setup` wizard configures your model provider, API keys, and optional packages. It runs automatically on first launch, but you can re-run it at any time to change your configuration.\n\n## Running setup\n\n```bash\nfeynman setup\n```\n\nThe wizard walks you through three stages: model configuration, authentication, and optional package installation.\n\n## Stage 1: Model selection\n\nFeynman supports multiple model providers. The setup wizard presents a list of available providers and models. Select your preferred default model using the arrow keys:\n\n```\n? Select your default model:\n anthropic:claude-sonnet-4-20250514\n> anthropic:claude-opus-4-20250514\n openai:gpt-4o\n openai:o3\n google:gemini-2.5-pro\n```\n\nThe model you choose here becomes the default for all sessions. You can override it per-session with the `--model` flag or change it later via `feynman model set \u003Cprovider:model>`.\n\n## Stage 2: Authentication\n\nDepending on your chosen provider, setup prompts you for an API key or walks you through OAuth login. For providers that support Pi OAuth (like Anthropic and OpenAI), Feynman opens a browser window to complete the sign-in flow. Your credentials are stored securely in the Pi auth storage at `~/.feynman/`.\n\nFor API key providers, you are prompted to paste your key directly:\n\n```\n? Enter your API key: sk-ant-...\n```\n\nKeys are encrypted at rest and never sent anywhere except the provider's API endpoint.\n\n## Stage 3: Optional packages\n\nFeynman's core ships with the essentials, but some features require additional packages. The wizard asks if you want to install optional presets:\n\n- **session-search** -- Enables searching prior session transcripts for past research\n- **memory** -- Automatic preference and correction memory across sessions\n- **generative-ui** -- Interactive HTML-style widgets for rich output\n\nYou can skip this step and install packages later with `feynman packages install \u003Cpreset>`.\n\n## Re-running setup\n\nConfiguration is stored in `~/.feynman/settings.json`. Running `feynman setup` again overwrites previous settings. If you only need to change a specific value, edit the config file directly or use the targeted commands like `feynman model set` or `feynman alpha login`.","src/content/docs/getting-started/setup.md","7a38dcb8196712db",{"html":265,"metadata":266},"\u003Cp>The \u003Ccode>feynman setup\u003C/code> wizard configures your model provider, API keys, and optional packages. It runs automatically on first launch, but you can re-run it at any time to change your configuration.\u003C/p>\n\u003Ch2 id=\"running-setup\">Running setup\u003C/h2>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> setup\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The wizard walks you through three stages: model configuration, authentication, and optional package installation.\u003C/p>\n\u003Ch2 id=\"stage-1-model-selection\">Stage 1: Model selection\u003C/h2>\n\u003Cp>Feynman supports multiple model providers. The setup wizard presents a list of available providers and models. Select your preferred default model using the arrow keys:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>? Select your default model:\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> anthropic:claude-sonnet-4-20250514\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan>> anthropic:claude-opus-4-20250514\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> openai:gpt-4o\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> openai:o3\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan> google:gemini-2.5-pro\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The model you choose here becomes the default for all sessions. You can override it per-session with the \u003Ccode>--model\u003C/code> flag or change it later via \u003Ccode>feynman model set <provider:model>\u003C/code>.\u003C/p>\n\u003Ch2 id=\"stage-2-authentication\">Stage 2: Authentication\u003C/h2>\n\u003Cp>Depending on your chosen provider, setup prompts you for an API key or walks you through OAuth login. For providers that support Pi OAuth (like Anthropic and OpenAI), Feynman opens a browser window to complete the sign-in flow. Your credentials are stored securely in the Pi auth storage at \u003Ccode>~/.feynman/\u003C/code>.\u003C/p>\n\u003Cp>For API key providers, you are prompted to paste your key directly:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>? Enter your API key: sk-ant-...\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Keys are encrypted at rest and never sent anywhere except the provider’s API endpoint.\u003C/p>\n\u003Ch2 id=\"stage-3-optional-packages\">Stage 3: Optional packages\u003C/h2>\n\u003Cp>Feynman’s core ships with the essentials, but some features require additional packages. The wizard asks if you want to install optional presets:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>session-search\u003C/strong> — Enables searching prior session transcripts for past research\u003C/li>\n\u003Cli>\u003Cstrong>memory\u003C/strong> — Automatic preference and correction memory across sessions\u003C/li>\n\u003Cli>\u003Cstrong>generative-ui\u003C/strong> — Interactive HTML-style widgets for rich output\u003C/li>\n\u003C/ul>\n\u003Cp>You can skip this step and install packages later with \u003Ccode>feynman packages install <preset>\u003C/code>.\u003C/p>\n\u003Ch2 id=\"re-running-setup\">Re-running setup\u003C/h2>\n\u003Cp>Configuration is stored in \u003Ccode>~/.feynman/settings.json\u003C/code>. Running \u003Ccode>feynman setup\u003C/code> again overwrites previous settings. If you only need to change a specific value, edit the config file directly or use the targeted commands like \u003Ccode>feynman model set\u003C/code> or \u003Ccode>feynman alpha login\u003C/code>.\u003C/p>",{"headings":267,"localImagePaths":283,"remoteImagePaths":284,"frontmatter":285,"imagePaths":286},[268,271,274,277,280],{"depth":26,"slug":269,"text":270},"running-setup","Running setup",{"depth":26,"slug":272,"text":273},"stage-1-model-selection","Stage 1: Model selection",{"depth":26,"slug":275,"text":276},"stage-2-authentication","Stage 2: Authentication",{"depth":26,"slug":278,"text":279},"stage-3-optional-packages","Stage 3: Optional packages",{"depth":26,"slug":281,"text":282},"re-running-setup","Re-running setup",[],[],{"title":259,"description":260,"section":131,"order":76},[],"getting-started/setup.md","reference/cli-commands",{"id":288,"data":290,"body":293,"filePath":294,"digest":295,"rendered":296,"legacyId":325},{"title":291,"description":292,"section":231,"order":17},"CLI Commands","Complete reference for all Feynman CLI commands and flags.","This page covers the dedicated Feynman CLI commands and flags. Workflow commands like `feynman deepresearch` are also documented in the [Slash Commands](/docs/reference/slash-commands) reference since they map directly to REPL slash commands.\n\n## Core commands\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 (model, auth, packages) |\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 for all sessions |\n\nThese commands manage your model provider configuration. The `model set` command updates `~/.feynman/settings.json` with the new default. The format is `provider:model-name`, for example `anthropic:claude-sonnet-4-20250514`.\n\n## AlphaXiv commands\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\nAlphaXiv authentication enables Feynman to search and retrieve papers, access discussion threads, and pull citation metadata. You can also manage AlphaXiv auth from inside the REPL with `/alpha-login`, `/alpha-status`, and `/alpha-logout`.\n\n## Package management\n\n| Command | Description |\n| --- | --- |\n| `feynman packages list` | List all available packages and their install status |\n| `feynman packages install \u003Cpreset>` | Install an optional package preset |\n| `feynman update [package]` | Update installed packages, or a specific package by name |\n\nUse `feynman packages list` to see which optional packages are available and which are already installed. The `all-extras` preset installs every optional package at once.\n\n## Utility commands\n\n| Command | Description |\n| --- | --- |\n| `feynman search status` | Show Pi web-access status and config path |\n\n## Workflow commands\n\nAll research workflow slash commands can also be invoked directly from the CLI:\n\n```bash\nfeynman deepresearch \"topic\"\nfeynman lit \"topic\"\nfeynman review artifact.md\nfeynman audit 2401.12345\nfeynman replicate \"claim\"\nfeynman compare \"topic\"\nfeynman draft \"topic\"\n```\n\nThese are equivalent to launching the REPL and typing the corresponding slash command.\n\n## Flags\n\n| Flag | Description |\n| --- | --- |\n| `--prompt \"\u003Ctext>\"` | Run one prompt and exit (one-shot mode) |\n| `--model \u003Cprovider:model>` | Force a specific model for this session |\n| `--thinking \u003Clevel>` | Set thinking level: `off`, `minimal`, `low`, `medium`, `high`, `xhigh` |\n| `--cwd \u003Cpath>` | Set the working directory for all file operations |\n| `--session-dir \u003Cpath>` | Set the session storage directory |\n| `--new-session` | Start a new persisted session |\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| `--doctor` | Alias for `feynman doctor` |\n| `--setup-preview` | Install preview dependencies (pandoc) |","src/content/docs/reference/cli-commands.md","8db9721dd1709c9c",{"html":297,"metadata":298},"\u003Cp>This page covers the dedicated Feynman CLI commands and flags. Workflow commands like \u003Ccode>feynman deepresearch\u003C/code> are also documented in the \u003Ca href=\"/docs/reference/slash-commands\">Slash Commands\u003C/a> reference since they map directly to REPL slash commands.\u003C/p>\n\u003Ch2 id=\"core-commands\">Core commands\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 (model, auth, packages)\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 for all sessions\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cp>These commands manage your model provider configuration. The \u003Ccode>model set\u003C/code> command updates \u003Ccode>~/.feynman/settings.json\u003C/code> with the new default. The format is \u003Ccode>provider:model-name\u003C/code>, for example \u003Ccode>anthropic:claude-sonnet-4-20250514\u003C/code>.\u003C/p>\n\u003Ch2 id=\"alphaxiv-commands\">AlphaXiv commands\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\u003Cp>AlphaXiv authentication enables Feynman to search and retrieve papers, access discussion threads, and pull citation metadata. You can also manage AlphaXiv auth from inside the REPL with \u003Ccode>/alpha-login\u003C/code>, \u003Ccode>/alpha-status\u003C/code>, and \u003Ccode>/alpha-logout\u003C/code>.\u003C/p>\n\u003Ch2 id=\"package-management\">Package 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\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>Command\u003C/th>\u003Cth>Description\u003C/th>\u003C/tr>\u003C/thead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>feynman packages list\u003C/code>\u003C/td>\u003Ctd>List all available packages and their install status\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman packages install <preset>\u003C/code>\u003C/td>\u003Ctd>Install an optional package preset\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>feynman update [package]\u003C/code>\u003C/td>\u003Ctd>Update installed packages, or a specific package by name\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cp>Use \u003Ccode>feynman packages list\u003C/code> to see which optional packages are available and which are already installed. The \u003Ccode>all-extras\u003C/code> preset installs every optional package at once.\u003C/p>\n\u003Ch2 id=\"utility-commands\">Utility commands\u003C/h2>\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>\u003C/tbody>\u003C/table>\n\u003Ch2 id=\"workflow-commands\">Workflow commands\u003C/h2>\n\u003Cp>All research workflow slash commands can also be invoked directly from the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> deepresearch\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> lit\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> review\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> artifact.md\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> audit\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\"> 2401.12345\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> replicate\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"claim\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> compare\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> draft\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>These are equivalent to launching the REPL and typing the corresponding slash command.\u003C/p>\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 (one-shot mode)\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--model <provider:model>\u003C/code>\u003C/td>\u003Ctd>Force a specific model for this session\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--thinking <level>\u003C/code>\u003C/td>\u003Ctd>Set thinking level: \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/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>--cwd <path>\u003C/code>\u003C/td>\u003Ctd>Set the working directory for all file operations\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>--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>--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>Install preview dependencies (pandoc)\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>",{"headings":299,"localImagePaths":321,"remoteImagePaths":322,"frontmatter":323,"imagePaths":324},[300,303,306,309,312,315,318],{"depth":26,"slug":301,"text":302},"core-commands","Core commands",{"depth":26,"slug":304,"text":305},"model-management","Model management",{"depth":26,"slug":307,"text":308},"alphaxiv-commands","AlphaXiv commands",{"depth":26,"slug":310,"text":311},"package-management","Package management",{"depth":26,"slug":313,"text":314},"utility-commands","Utility commands",{"depth":26,"slug":316,"text":317},"workflow-commands","Workflow commands",{"depth":26,"slug":319,"text":320},"flags","Flags",[],[],{"title":291,"description":292,"section":231,"order":17},[],"reference/cli-commands.md","tools/preview",{"id":326,"data":328,"body":332,"filePath":333,"digest":334,"rendered":335,"legacyId":358},{"title":329,"description":330,"section":331,"order":105},"Preview","Preview generated research artifacts as rendered HTML or PDF.","Tools","The preview tool renders generated artifacts as polished HTML or PDF documents and opens them in your browser or PDF viewer. This is particularly useful for research briefs, paper drafts, and any document that contains LaTeX math, tables, or complex formatting that does not render well in a terminal.\n\n## Usage\n\nInside the REPL, preview the most recent artifact:\n\n```\n/preview\n```\n\nFeynman suggests previewing automatically when you generate artifacts that benefit from rendered output. You can also preview a specific file:\n\n```\n/preview outputs/scaling-laws-brief.md\n```\n\n## Requirements\n\nPreview requires `pandoc` for Markdown-to-HTML and Markdown-to-PDF rendering. Install the preview dependencies with:\n\n```bash\nfeynman --setup-preview\n```\n\nOn macOS with Homebrew, the setup command attempts to install pandoc automatically. On Linux, it checks for pandoc in your package manager. If the automatic install does not work, install pandoc manually from [pandoc.org](https://pandoc.org/installing.html) and rerun `feynman --setup-preview` to verify.\n\n## Supported formats\n\nThe preview tool handles three output formats:\n\n- **Markdown** -- Rendered as HTML with full LaTeX math support via KaTeX, syntax-highlighted code blocks, and clean typography\n- **HTML** -- Opened directly in your default browser with no conversion step\n- **PDF** -- Generated via pandoc with LaTeX rendering, suitable for sharing or printing\n\n## How it works\n\nThe `pi-markdown-preview` package handles the rendering pipeline. For Markdown files, it converts to HTML with a clean stylesheet, proper code highlighting, and rendered math equations. The preview opens in your default browser as a local file.\n\nFor documents with heavy math notation (common in research drafts), the preview ensures all LaTeX expressions render correctly. Inline math (`$...$`) and display math (`$$...$$`) are both supported. Tables, citation lists, and nested blockquotes all render with proper formatting.\n\n## Customization\n\nThe preview stylesheet is designed for research documents and includes styles for proper heading hierarchy, code blocks with syntax highlighting, tables with clean borders, math equations (inline and display), citation formatting, and blockquotes. The stylesheet is bundled with the package and does not require any configuration.","src/content/docs/tools/preview.md","aebd652dc47e334e",{"html":336,"metadata":337},"\u003Cp>The preview tool renders generated artifacts as polished HTML or PDF documents and opens them in your browser or PDF viewer. This is particularly useful for research briefs, paper drafts, and any document that contains LaTeX math, tables, or complex formatting that does not render well in a terminal.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>Inside the REPL, preview the most recent artifact:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Feynman suggests previewing automatically when you generate artifacts that benefit from rendered output. You can also preview a specific file:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/preview outputs/scaling-laws-brief.md\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"requirements\">Requirements\u003C/h2>\n\u003Cp>Preview requires \u003Ccode>pandoc\u003C/code> for Markdown-to-HTML and Markdown-to-PDF rendering. Install the preview dependencies with:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> --setup-preview\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>On macOS with Homebrew, the setup command attempts to install pandoc automatically. On Linux, it checks for pandoc in your package manager. If the automatic install does not work, install pandoc manually from \u003Ca href=\"https://pandoc.org/installing.html\">pandoc.org\u003C/a> and rerun \u003Ccode>feynman --setup-preview\u003C/code> to verify.\u003C/p>\n\u003Ch2 id=\"supported-formats\">Supported formats\u003C/h2>\n\u003Cp>The preview tool handles three output formats:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Markdown\u003C/strong> — Rendered as HTML with full LaTeX math support via KaTeX, syntax-highlighted code blocks, and clean typography\u003C/li>\n\u003Cli>\u003Cstrong>HTML\u003C/strong> — Opened directly in your default browser with no conversion step\u003C/li>\n\u003Cli>\u003Cstrong>PDF\u003C/strong> — Generated via pandoc with LaTeX rendering, suitable for sharing or printing\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The \u003Ccode>pi-markdown-preview\u003C/code> package handles the rendering pipeline. For Markdown files, it converts to HTML with a clean stylesheet, proper code highlighting, and rendered math equations. The preview opens in your default browser as a local file.\u003C/p>\n\u003Cp>For documents with heavy math notation (common in research drafts), the preview ensures all LaTeX expressions render correctly. Inline math (\u003Ccode>$...$\u003C/code>) and display math (\u003Ccode>$$...$$\u003C/code>) are both supported. Tables, citation lists, and nested blockquotes all render with proper formatting.\u003C/p>\n\u003Ch2 id=\"customization\">Customization\u003C/h2>\n\u003Cp>The preview stylesheet is designed for research documents and includes styles for proper heading hierarchy, code blocks with syntax highlighting, tables with clean borders, math equations (inline and display), citation formatting, and blockquotes. The stylesheet is bundled with the package and does not require any configuration.\u003C/p>",{"headings":338,"localImagePaths":354,"remoteImagePaths":355,"frontmatter":356,"imagePaths":357},[339,342,345,348,351],{"depth":26,"slug":340,"text":341},"usage","Usage",{"depth":26,"slug":343,"text":344},"requirements","Requirements",{"depth":26,"slug":346,"text":347},"supported-formats","Supported formats",{"depth":26,"slug":349,"text":350},"how-it-works","How it works",{"depth":26,"slug":352,"text":353},"customization","Customization",[],[],{"title":329,"description":330,"section":331,"order":105},[],"tools/preview.md","reference/slash-commands",{"id":359,"data":361,"body":364,"filePath":365,"digest":366,"rendered":367,"legacyId":387},{"title":362,"description":363,"section":231,"order":26},"Slash Commands","Complete reference for REPL slash commands.","Slash commands are available inside the Feynman REPL. They map to research workflows, project management tools, and setup utilities. Type `/help` inside the REPL for the live command list, which may include additional commands from installed Pi packages.\n\n## Research workflows\n\n| Command | Description |\n| --- | --- |\n| `/deepresearch \u003Ctopic>` | Run a thorough, source-heavy investigation and produce a research brief with inline citations |\n| `/lit \u003Ctopic>` | Run a structured literature review with consensus, disagreements, and open questions |\n| `/review \u003Cartifact>` | Simulate a peer review with severity-graded feedback and inline annotations |\n| `/audit \u003Citem>` | Compare a paper's claims against its public codebase for mismatches and reproducibility risks |\n| `/replicate \u003Cpaper>` | Plan or execute a replication workflow for a paper, claim, or benchmark |\n| `/compare \u003Ctopic>` | Compare multiple sources and produce an agreement/disagreement matrix |\n| `/draft \u003Ctopic>` | Generate a paper-style draft from research findings |\n| `/autoresearch \u003Cidea>` | Start an autonomous experiment loop that iteratively optimizes toward a goal |\n| `/watch \u003Ctopic>` | Set up recurring research monitoring on a topic |\n\nThese are the primary commands you will use day-to-day. Each workflow dispatches one or more specialized agents (researcher, reviewer, writer, verifier) depending on the task.\n\n## Project and 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 work: running processes, scheduled follow-ups, and active watches |\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 new research project |\n| `/search` | Search prior session transcripts for past research and findings |\n| `/preview` | Preview the current artifact as rendered HTML or PDF |\n\nSession management commands help you organize ongoing work. The `/log` command is particularly useful at the end of a research session to capture what was accomplished and what remains.\n\n## Setup commands\n\n| Command | Description |\n| --- | --- |\n| `/alpha-login` | Sign in to alphaXiv from inside the REPL |\n| `/alpha-status` | Show alphaXiv authentication status |\n| `/alpha-logout` | Clear alphaXiv auth from inside the REPL |\n\nThese provide a convenient way to manage alphaXiv authentication without leaving the REPL.\n\n## Running workflows from the CLI\n\nAll research workflow slash commands can also be run directly from the command line:\n\n```bash\nfeynman deepresearch \"topic\"\nfeynman lit \"topic\"\nfeynman review artifact.md\nfeynman audit 2401.12345\nfeynman replicate \"claim\"\nfeynman compare \"topic\"\nfeynman draft \"topic\"\n```\n\nThis is equivalent to launching the REPL and typing the slash command. The CLI form is useful for scripting and automation.","src/content/docs/reference/slash-commands.md","a3165c1c42fb3f71",{"html":368,"metadata":369},"\u003Cp>Slash commands are available inside the Feynman REPL. They map to research workflows, project management tools, and setup utilities. Type \u003Ccode>/help\u003C/code> inside the REPL for the live command list, which may include additional commands from installed Pi packages.\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 and produce a research brief with inline citations\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/lit <topic>\u003C/code>\u003C/td>\u003Ctd>Run a structured literature review with consensus, disagreements, and open questions\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/review <artifact>\u003C/code>\u003C/td>\u003Ctd>Simulate a peer review with severity-graded feedback and inline annotations\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/audit <item>\u003C/code>\u003C/td>\u003Ctd>Compare a paper’s claims against its public codebase for mismatches 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 and produce an agreement/disagreement matrix\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/draft <topic>\u003C/code>\u003C/td>\u003Ctd>Generate a paper-style draft from research findings\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/autoresearch <idea>\u003C/code>\u003C/td>\u003Ctd>Start an autonomous experiment loop that iteratively optimizes toward a goal\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/watch <topic>\u003C/code>\u003C/td>\u003Ctd>Set up recurring research monitoring on a topic\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cp>These are the primary commands you will use day-to-day. Each workflow dispatches one or more specialized agents (researcher, reviewer, writer, verifier) depending on the task.\u003C/p>\n\u003Ch2 id=\"project-and-session\">Project and 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\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 work: running processes, scheduled follow-ups, and active watches\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 \u003Ccode>AGENTS.md\u003C/code> and session-log folders for a new research project\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/search\u003C/code>\u003C/td>\u003Ctd>Search prior session transcripts for past research and findings\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>/preview\u003C/code>\u003C/td>\u003Ctd>Preview the current artifact as rendered HTML or PDF\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cp>Session management commands help you organize ongoing work. The \u003Ccode>/log\u003C/code> command is particularly useful at the end of a research session to capture what was accomplished and what remains.\u003C/p>\n\u003Ch2 id=\"setup-commands\">Setup commands\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 the REPL\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 the REPL\u003C/td>\u003C/tr>\u003C/tbody>\u003C/table>\n\u003Cp>These provide a convenient way to manage alphaXiv authentication without leaving the REPL.\u003C/p>\n\u003Ch2 id=\"running-workflows-from-the-cli\">Running workflows from the CLI\u003C/h2>\n\u003Cp>All research workflow slash commands can also be run directly from the command line:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> deepresearch\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> lit\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> review\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> artifact.md\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> audit\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\"> 2401.12345\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> replicate\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"claim\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> compare\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> draft\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>This is equivalent to launching the REPL and typing the slash command. The CLI form is useful for scripting and automation.\u003C/p>",{"headings":370,"localImagePaths":383,"remoteImagePaths":384,"frontmatter":385,"imagePaths":386},[371,374,377,380],{"depth":26,"slug":372,"text":373},"research-workflows","Research workflows",{"depth":26,"slug":375,"text":376},"project-and-session","Project and session",{"depth":26,"slug":378,"text":379},"setup-commands","Setup commands",{"depth":26,"slug":381,"text":382},"running-workflows-from-the-cli","Running workflows from the CLI",[],[],{"title":362,"description":363,"section":231,"order":26},[],"reference/slash-commands.md","tools/session-search",{"id":388,"data":390,"body":393,"filePath":394,"digest":395,"rendered":396,"legacyId":414},{"title":391,"description":392,"section":331,"order":76},"Session Search","Search prior Feynman session transcripts to recall past research.","The session search tool recovers prior Feynman work from stored session transcripts. Every Feynman session is persisted to disk, and session search lets you find and reference past research, findings, and generated artifacts without starting over.\n\n## Installation\n\nSession search is an optional package. Install it with:\n\n```bash\nfeynman packages install session-search\n```\n\nOnce installed, the `/search` slash command and automatic session recall become available in all future sessions.\n\n## Usage\n\nInside the REPL, invoke session search directly:\n\n```\n/search transformer scaling laws\n```\n\nYou can also reference prior work naturally in conversation. Feynman invokes session search automatically when you mention previous research or ask to continue earlier work. For example, saying \"pick up where I left off on protein folding\" triggers a session search behind the scenes.\n\n## What it searches\n\nSession search indexes the full contents of your session history:\n\n- Full session transcripts including your prompts and Feynman's responses\n- Tool outputs and agent results from workflows like deep research and literature review\n- Generated artifacts such as drafts, reports, and comparison matrices\n- Metadata like timestamps, topics, and workflow types\n\nThe search uses both keyword matching and semantic similarity to find relevant past work. Results include the session ID, timestamp, and relevant excerpts so you can quickly identify which session contains the information you need.\n\n## When to use it\n\nSession search is valuable when you want to pick up a previous research thread without rerunning an expensive workflow, find specific findings or citations from a past deep research session, reference prior analysis in a new research context, or check what you have already investigated on a topic before launching a new round.\n\n## How it works\n\nThe `@kaiserlich-dev/pi-session-search` package provides the underlying search and indexing. Sessions are stored in `~/.feynman/sessions/` by default (configurable with `--session-dir`). The index is built incrementally as new sessions complete, so search stays fast even with hundreds of past sessions.","src/content/docs/tools/session-search.md","ffa683a7c4259fb3",{"html":397,"metadata":398},"\u003Cp>The session search tool recovers prior Feynman work from stored session transcripts. Every Feynman session is persisted to disk, and session search lets you find and reference past research, findings, and generated artifacts without starting over.\u003C/p>\n\u003Ch2 id=\"installation\">Installation\u003C/h2>\n\u003Cp>Session search is an optional package. Install it with:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> packages\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> install\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> session-search\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Once installed, the \u003Ccode>/search\u003C/code> slash command and automatic session recall become available in all future sessions.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>Inside the REPL, invoke session search directly:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/search transformer scaling laws\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You can also reference prior work naturally in conversation. Feynman invokes session search automatically when you mention previous research or ask to continue earlier work. For example, saying “pick up where I left off on protein folding” triggers a session search behind the scenes.\u003C/p>\n\u003Ch2 id=\"what-it-searches\">What it searches\u003C/h2>\n\u003Cp>Session search indexes the full contents of your session history:\u003C/p>\n\u003Cul>\n\u003Cli>Full session transcripts including your prompts and Feynman’s responses\u003C/li>\n\u003Cli>Tool outputs and agent results from workflows like deep research and literature review\u003C/li>\n\u003Cli>Generated artifacts such as drafts, reports, and comparison matrices\u003C/li>\n\u003Cli>Metadata like timestamps, topics, and workflow types\u003C/li>\n\u003C/ul>\n\u003Cp>The search uses both keyword matching and semantic similarity to find relevant past work. Results include the session ID, timestamp, and relevant excerpts so you can quickly identify which session contains the information you need.\u003C/p>\n\u003Ch2 id=\"when-to-use-it\">When to use it\u003C/h2>\n\u003Cp>Session search is valuable when you want to pick up a previous research thread without rerunning an expensive workflow, find specific findings or citations from a past deep research session, reference prior analysis in a new research context, or check what you have already investigated on a topic before launching a new round.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The \u003Ccode>@kaiserlich-dev/pi-session-search\u003C/code> package provides the underlying search and indexing. Sessions are stored in \u003Ccode>~/.feynman/sessions/\u003C/code> by default (configurable with \u003Ccode>--session-dir\u003C/code>). The index is built incrementally as new sessions complete, so search stays fast even with hundreds of past sessions.\u003C/p>",{"headings":399,"localImagePaths":410,"remoteImagePaths":411,"frontmatter":412,"imagePaths":413},[400,402,403,406,409],{"depth":26,"slug":401,"text":165},"installation",{"depth":26,"slug":340,"text":341},{"depth":26,"slug":404,"text":405},"what-it-searches","What it searches",{"depth":26,"slug":407,"text":408},"when-to-use-it","When to use it",{"depth":26,"slug":349,"text":350},[],[],{"title":391,"description":392,"section":331,"order":76},[],"tools/session-search.md","tools/alphaxiv",{"id":415,"data":417,"body":420,"filePath":421,"digest":422,"rendered":423,"legacyId":445},{"title":418,"description":419,"section":331,"order":17},"AlphaXiv","Search and retrieve academic papers through the AlphaXiv integration.","AlphaXiv is the primary academic paper search and retrieval tool in Feynman. It provides access to a vast corpus of research papers, discussion threads, citation metadata, and full-text PDFs. The researcher agent uses AlphaXiv as its primary source for academic content.\n\n## Authentication\n\nAlphaXiv requires authentication. Set it up during initial setup or at any time:\n\n```bash\nfeynman alpha login\n```\n\nCheck your authentication status:\n\n```bash\nfeynman alpha status\n```\n\nYou can also manage AlphaXiv auth from inside the REPL with `/alpha-login`, `/alpha-status`, and `/alpha-logout`.\n\n## What it provides\n\nAlphaXiv gives Feynman access to several capabilities that power the research workflows:\n\n- **Paper search** -- Find papers by topic, author, keyword, or arXiv ID\n- **Full-text retrieval** -- Download and parse complete PDFs for in-depth reading\n- **Citation metadata** -- Access citation counts, references, and citation chains\n- **Discussion threads** -- Read community discussions and annotations on papers\n- **Related papers** -- Discover connected work through citation graphs and recommendations\n\n## How it is used\n\nYou do not invoke AlphaXiv directly in most cases. The researcher agent uses it automatically during workflows like deep research, literature review, and peer review. When you provide an arXiv ID (like `arxiv:2401.12345`), Feynman fetches the paper through AlphaXiv.\n\nAlphaXiv search is especially powerful when combined with citation chaining. The researcher agent can follow references from a relevant paper to discover foundational work, then follow forward citations to find papers that built on it. This produces a much more complete picture than keyword search alone.\n\n## Configuration\n\nAlphaXiv configuration is managed through the CLI commands listed above. Authentication tokens are stored in `~/.feynman/auth/` and persist across sessions. No additional configuration is needed beyond logging in.\n\n## Without AlphaXiv\n\nIf you choose not to authenticate with AlphaXiv, Feynman still functions but with reduced academic search capabilities. It falls back to web search for finding papers, which works for well-known work but misses the citation metadata, discussion threads, and full-text access that AlphaXiv provides. For serious research workflows, AlphaXiv authentication is strongly recommended.","src/content/docs/tools/alphaxiv.md","be316ef53d85512d",{"html":424,"metadata":425},"\u003Cp>AlphaXiv is the primary academic paper search and retrieval tool in Feynman. It provides access to a vast corpus of research papers, discussion threads, citation metadata, and full-text PDFs. The researcher agent uses AlphaXiv as its primary source for academic content.\u003C/p>\n\u003Ch2 id=\"authentication\">Authentication\u003C/h2>\n\u003Cp>AlphaXiv requires authentication. Set it up during initial setup or at any time:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> alpha\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> login\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Check your authentication status:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> alpha\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> status\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You can also manage AlphaXiv auth from inside the REPL with \u003Ccode>/alpha-login\u003C/code>, \u003Ccode>/alpha-status\u003C/code>, and \u003Ccode>/alpha-logout\u003C/code>.\u003C/p>\n\u003Ch2 id=\"what-it-provides\">What it provides\u003C/h2>\n\u003Cp>AlphaXiv gives Feynman access to several capabilities that power the research workflows:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Paper search\u003C/strong> — Find papers by topic, author, keyword, or arXiv ID\u003C/li>\n\u003Cli>\u003Cstrong>Full-text retrieval\u003C/strong> — Download and parse complete PDFs for in-depth reading\u003C/li>\n\u003Cli>\u003Cstrong>Citation metadata\u003C/strong> — Access citation counts, references, and citation chains\u003C/li>\n\u003Cli>\u003Cstrong>Discussion threads\u003C/strong> — Read community discussions and annotations on papers\u003C/li>\n\u003Cli>\u003Cstrong>Related papers\u003C/strong> — Discover connected work through citation graphs and recommendations\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"how-it-is-used\">How it is used\u003C/h2>\n\u003Cp>You do not invoke AlphaXiv directly in most cases. The researcher agent uses it automatically during workflows like deep research, literature review, and peer review. When you provide an arXiv ID (like \u003Ccode>arxiv:2401.12345\u003C/code>), Feynman fetches the paper through AlphaXiv.\u003C/p>\n\u003Cp>AlphaXiv search is especially powerful when combined with citation chaining. The researcher agent can follow references from a relevant paper to discover foundational work, then follow forward citations to find papers that built on it. This produces a much more complete picture than keyword search alone.\u003C/p>\n\u003Ch2 id=\"configuration\">Configuration\u003C/h2>\n\u003Cp>AlphaXiv configuration is managed through the CLI commands listed above. Authentication tokens are stored in \u003Ccode>~/.feynman/auth/\u003C/code> and persist across sessions. No additional configuration is needed beyond logging in.\u003C/p>\n\u003Ch2 id=\"without-alphaxiv\">Without AlphaXiv\u003C/h2>\n\u003Cp>If you choose not to authenticate with AlphaXiv, Feynman still functions but with reduced academic search capabilities. It falls back to web search for finding papers, which works for well-known work but misses the citation metadata, discussion threads, and full-text access that AlphaXiv provides. For serious research workflows, AlphaXiv authentication is strongly recommended.\u003C/p>",{"headings":426,"localImagePaths":441,"remoteImagePaths":442,"frontmatter":443,"imagePaths":444},[427,430,433,436,438],{"depth":26,"slug":428,"text":429},"authentication","Authentication",{"depth":26,"slug":431,"text":432},"what-it-provides","What it provides",{"depth":26,"slug":434,"text":435},"how-it-is-used","How it is used",{"depth":26,"slug":437,"text":129},"configuration",{"depth":26,"slug":439,"text":440},"without-alphaxiv","Without AlphaXiv",[],[],{"title":418,"description":419,"section":331,"order":17},[],"tools/alphaxiv.md","workflows/autoresearch",{"id":446,"data":448,"body":453,"filePath":454,"digest":455,"rendered":456,"legacyId":473},{"title":449,"description":450,"section":451,"order":452},"Autoresearch","Start an autonomous experiment loop that iteratively optimizes toward a goal.","Workflows",8,"The autoresearch workflow launches an autonomous research loop that iteratively designs experiments, runs them, analyzes results, and proposes next steps. It is designed for open-ended exploration where the goal is optimization or discovery rather than a specific answer.\n\n## Usage\n\nFrom the REPL:\n\n```\n/autoresearch Optimize prompt engineering strategies for math reasoning on GSM8K\n```\n\nFrom the CLI:\n\n```bash\nfeynman autoresearch \"Optimize prompt engineering strategies for math reasoning on GSM8K\"\n```\n\nAutoresearch runs as a long-lived background process. You can monitor its progress, pause it, or redirect its focus at any time.\n\n## How it works\n\nThe autoresearch workflow is powered by `@tmustier/pi-ralph-wiggum`, which provides long-running agent loops. The workflow begins by analyzing the research goal and designing an initial experiment plan. It then enters an iterative loop:\n\n1. **Hypothesis** -- The agent proposes a hypothesis or modification based on current results\n2. **Experiment** -- It designs and executes an experiment to test the hypothesis\n3. **Analysis** -- Results are analyzed and compared against prior iterations\n4. **Decision** -- The agent decides whether to continue the current direction, try a variation, or pivot to a new approach\n\nEach iteration builds on the previous ones. The agent maintains a running log of what has been tried, what worked, what failed, and what the current best result is. This prevents repeating failed approaches and ensures the search progresses efficiently.\n\n## Monitoring and control\n\nCheck active autoresearch jobs:\n\n```\n/jobs\n```\n\nAutoresearch runs in the background, so you can continue using Feynman for other tasks while it works. The `/jobs` command shows the current status, iteration count, and best result so far. You can interrupt the loop at any time to provide guidance or redirect the search.\n\n## Output format\n\nAutoresearch produces a running experiment log that includes:\n\n- **Experiment History** -- What was tried in each iteration with parameters and results\n- **Best Configuration** -- The best-performing setup found so far\n- **Ablation Results** -- Which factors mattered most based on the experiments run\n- **Recommendations** -- Suggested next steps based on observed trends\n\n## When to use it\n\nUse `/autoresearch` for tasks that benefit from iterative exploration: hyperparameter optimization, prompt engineering, architecture search, or any problem where the search space is large and the feedback signal is clear. It is not the right tool for answering a specific question (use `/deepresearch` for that) but excels at finding what works best through systematic experimentation.","src/content/docs/workflows/autoresearch.md","c7a88b0036aea407",{"html":457,"metadata":458},"\u003Cp>The autoresearch workflow launches an autonomous research loop that iteratively designs experiments, runs them, analyzes results, and proposes next steps. It is designed for open-ended exploration where the goal is optimization or discovery rather than a specific answer.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/autoresearch Optimize prompt engineering strategies for math reasoning on GSM8K\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> autoresearch\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"Optimize prompt engineering strategies for math reasoning on GSM8K\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Autoresearch runs as a long-lived background process. You can monitor its progress, pause it, or redirect its focus at any time.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The autoresearch workflow is powered by \u003Ccode>@tmustier/pi-ralph-wiggum\u003C/code>, which provides long-running agent loops. The workflow begins by analyzing the research goal and designing an initial experiment plan. It then enters an iterative loop:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Hypothesis\u003C/strong> — The agent proposes a hypothesis or modification based on current results\u003C/li>\n\u003Cli>\u003Cstrong>Experiment\u003C/strong> — It designs and executes an experiment to test the hypothesis\u003C/li>\n\u003Cli>\u003Cstrong>Analysis\u003C/strong> — Results are analyzed and compared against prior iterations\u003C/li>\n\u003Cli>\u003Cstrong>Decision\u003C/strong> — The agent decides whether to continue the current direction, try a variation, or pivot to a new approach\u003C/li>\n\u003C/ol>\n\u003Cp>Each iteration builds on the previous ones. The agent maintains a running log of what has been tried, what worked, what failed, and what the current best result is. This prevents repeating failed approaches and ensures the search progresses efficiently.\u003C/p>\n\u003Ch2 id=\"monitoring-and-control\">Monitoring and control\u003C/h2>\n\u003Cp>Check active autoresearch jobs:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/jobs\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Autoresearch runs in the background, so you can continue using Feynman for other tasks while it works. The \u003Ccode>/jobs\u003C/code> command shows the current status, iteration count, and best result so far. You can interrupt the loop at any time to provide guidance or redirect the search.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>Autoresearch produces a running experiment log that includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Experiment History\u003C/strong> — What was tried in each iteration with parameters and results\u003C/li>\n\u003Cli>\u003Cstrong>Best Configuration\u003C/strong> — The best-performing setup found so far\u003C/li>\n\u003Cli>\u003Cstrong>Ablation Results\u003C/strong> — Which factors mattered most based on the experiments run\u003C/li>\n\u003Cli>\u003Cstrong>Recommendations\u003C/strong> — Suggested next steps based on observed trends\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"when-to-use-it\">When to use it\u003C/h2>\n\u003Cp>Use \u003Ccode>/autoresearch\u003C/code> for tasks that benefit from iterative exploration: hyperparameter optimization, prompt engineering, architecture search, or any problem where the search space is large and the feedback signal is clear. It is not the right tool for answering a specific question (use \u003Ccode>/deepresearch\u003C/code> for that) but excels at finding what works best through systematic experimentation.\u003C/p>",{"headings":459,"localImagePaths":469,"remoteImagePaths":470,"frontmatter":471,"imagePaths":472},[460,461,462,465,468],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":463,"text":464},"monitoring-and-control","Monitoring and control",{"depth":26,"slug":466,"text":467},"output-format","Output format",{"depth":26,"slug":407,"text":408},[],[],{"title":449,"description":450,"section":451,"order":452},[],"workflows/autoresearch.md","workflows/audit",{"id":474,"data":476,"body":479,"filePath":480,"digest":481,"rendered":482,"legacyId":494},{"title":477,"description":478,"section":451,"order":105},"Code Audit","Compare a paper's claims against its public codebase for reproducibility.","The code audit workflow compares a paper's claims against its public codebase to identify mismatches, undocumented deviations, and reproducibility risks. It bridges the gap between what a paper says and what the code actually does.\n\n## Usage\n\nFrom the REPL:\n\n```\n/audit arxiv:2401.12345\n```\n\n```\n/audit https://github.com/org/repo --paper arxiv:2401.12345\n```\n\nFrom the CLI:\n\n```bash\nfeynman audit 2401.12345\n```\n\nWhen given an arXiv ID, Feynman locates the associated code repository from the paper's links, Papers With Code, or GitHub search. You can also provide the repository URL directly.\n\n## How it works\n\nThe audit workflow operates in two passes. First, the researcher agent reads the paper and extracts all concrete claims: hyperparameters, architecture details, training procedures, dataset splits, evaluation metrics, and reported results. Each claim is tagged with its location in the paper for traceability.\n\nSecond, the verifier agent examines the codebase to find the corresponding implementation for each claim. It checks configuration files, training scripts, model definitions, and evaluation code to verify that the code matches the paper's description. When it finds a discrepancy -- a hyperparameter that differs, a training step that was described but not implemented, or an evaluation procedure that deviates from the paper -- it documents the mismatch with exact file paths and line numbers.\n\nThe audit also checks for common reproducibility issues like missing random seeds, non-deterministic operations without pinned versions, hardcoded paths, and absent environment specifications.\n\n## Output format\n\nThe audit report contains:\n\n- **Match Summary** -- Percentage of claims that match the code\n- **Confirmed Claims** -- Claims that are accurately reflected in the codebase\n- **Mismatches** -- Discrepancies between paper and code with evidence from both\n- **Missing Implementations** -- Claims in the paper with no corresponding code\n- **Reproducibility Risks** -- Issues like missing seeds, unpinned dependencies, or hardcoded paths\n\n## When to use it\n\nUse `/audit` when you are deciding whether to build on a paper's results, when replicating an experiment, or when reviewing a paper for a venue and want to verify its claims against the code. It is also useful for auditing your own papers before submission to catch inconsistencies between your writeup and implementation.","src/content/docs/workflows/audit.md","7d60cea54461fffa",{"html":483,"metadata":484},"\u003Cp>The code audit workflow compares a paper’s claims against its public codebase to identify mismatches, undocumented deviations, and reproducibility risks. It bridges the gap between what a paper says and what the code actually does.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/audit arxiv:2401.12345\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/audit https://github.com/org/repo --paper arxiv:2401.12345\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> audit\u003C/span>\u003Cspan style=\"color:#DF69BA;--shiki-dark:#D699B6\"> 2401.12345\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>When given an arXiv ID, Feynman locates the associated code repository from the paper’s links, Papers With Code, or GitHub search. You can also provide the repository URL directly.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The audit workflow operates in two passes. First, the researcher agent reads the paper and extracts all concrete claims: hyperparameters, architecture details, training procedures, dataset splits, evaluation metrics, and reported results. Each claim is tagged with its location in the paper for traceability.\u003C/p>\n\u003Cp>Second, the verifier agent examines the codebase to find the corresponding implementation for each claim. It checks configuration files, training scripts, model definitions, and evaluation code to verify that the code matches the paper’s description. When it finds a discrepancy — a hyperparameter that differs, a training step that was described but not implemented, or an evaluation procedure that deviates from the paper — it documents the mismatch with exact file paths and line numbers.\u003C/p>\n\u003Cp>The audit also checks for common reproducibility issues like missing random seeds, non-deterministic operations without pinned versions, hardcoded paths, and absent environment specifications.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The audit report contains:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Match Summary\u003C/strong> — Percentage of claims that match the code\u003C/li>\n\u003Cli>\u003Cstrong>Confirmed Claims\u003C/strong> — Claims that are accurately reflected in the codebase\u003C/li>\n\u003Cli>\u003Cstrong>Mismatches\u003C/strong> — Discrepancies between paper and code with evidence from both\u003C/li>\n\u003Cli>\u003Cstrong>Missing Implementations\u003C/strong> — Claims in the paper with no corresponding code\u003C/li>\n\u003Cli>\u003Cstrong>Reproducibility Risks\u003C/strong> — Issues like missing seeds, unpinned dependencies, or hardcoded paths\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"when-to-use-it\">When to use it\u003C/h2>\n\u003Cp>Use \u003Ccode>/audit\u003C/code> when you are deciding whether to build on a paper’s results, when replicating an experiment, or when reviewing a paper for a venue and want to verify its claims against the code. It is also useful for auditing your own papers before submission to catch inconsistencies between your writeup and implementation.\u003C/p>",{"headings":485,"localImagePaths":490,"remoteImagePaths":491,"frontmatter":492,"imagePaths":493},[486,487,488,489],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":407,"text":408},[],[],{"title":477,"description":478,"section":451,"order":105},[],"workflows/audit.md","workflows/deep-research",{"id":495,"data":497,"body":500,"filePath":501,"digest":502,"rendered":503,"legacyId":515},{"title":498,"description":499,"section":451,"order":17},"Deep Research","Run a thorough, multi-agent investigation that produces a cited research brief.","Deep research is the flagship Feynman workflow. It dispatches multiple researcher agents in parallel to search academic papers, web sources, and code repositories, then synthesizes everything into a structured research brief with inline citations.\n\n## Usage\n\nFrom the REPL:\n\n```\n/deepresearch What are the current approaches to mechanistic interpretability in LLMs?\n```\n\nFrom the CLI:\n\n```bash\nfeynman deepresearch \"What are the current approaches to mechanistic interpretability in LLMs?\"\n```\n\nBoth forms are equivalent. The workflow begins immediately and streams progress as agents discover and analyze sources.\n\n## How it works\n\nThe deep research workflow proceeds through four phases. First, the researcher agents fan out to search AlphaXiv for relevant papers and the web for non-academic sources like blog posts, documentation, and code repositories. Each agent tackles a different angle of the topic to maximize coverage.\n\nSecond, the agents read and extract key findings from the most relevant sources. They pull claims, methodology details, results, and limitations from each paper or article. For academic papers, they access the full PDF through AlphaXiv when available.\n\nThird, a synthesis step cross-references findings across sources, identifies areas of consensus and disagreement, and organizes the material into a coherent narrative. The writer agent structures the output as a research brief with sections for background, key findings, open questions, and references.\n\nFinally, the verifier agent spot-checks claims against their cited sources to flag any misattributions or unsupported assertions. The finished report is saved to your session directory and can be previewed as rendered HTML with `/preview`.\n\n## Output format\n\nThe research brief follows a consistent structure:\n\n- **Summary** -- A concise overview of the topic and key takeaways\n- **Background** -- Context and motivation for the research area\n- **Key Findings** -- The main results organized by theme, with inline citations\n- **Open Questions** -- Unresolved issues and promising research directions\n- **References** -- Full citation list with links to source papers and articles\n\n## Customization\n\nYou can steer the research by being specific in your prompt. Narrow topics produce more focused briefs. Broad topics produce survey-style overviews. You can also specify constraints like \"focus on papers from 2024\" or \"only consider empirical results\" to guide the agents.","src/content/docs/workflows/deep-research.md","1bbb4db9ca6450a2",{"html":504,"metadata":505},"\u003Cp>Deep research is the flagship Feynman workflow. It dispatches multiple researcher agents in parallel to search academic papers, web sources, and code repositories, then synthesizes everything into a structured research brief with inline citations.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/deepresearch What are the current approaches to mechanistic interpretability in LLMs?\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> deepresearch\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"What are the current approaches to mechanistic interpretability in LLMs?\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Both forms are equivalent. The workflow begins immediately and streams progress as agents discover and analyze sources.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The deep research workflow proceeds through four phases. First, the researcher agents fan out to search AlphaXiv for relevant papers and the web for non-academic sources like blog posts, documentation, and code repositories. Each agent tackles a different angle of the topic to maximize coverage.\u003C/p>\n\u003Cp>Second, the agents read and extract key findings from the most relevant sources. They pull claims, methodology details, results, and limitations from each paper or article. For academic papers, they access the full PDF through AlphaXiv when available.\u003C/p>\n\u003Cp>Third, a synthesis step cross-references findings across sources, identifies areas of consensus and disagreement, and organizes the material into a coherent narrative. The writer agent structures the output as a research brief with sections for background, key findings, open questions, and references.\u003C/p>\n\u003Cp>Finally, the verifier agent spot-checks claims against their cited sources to flag any misattributions or unsupported assertions. The finished report is saved to your session directory and can be previewed as rendered HTML with \u003Ccode>/preview\u003C/code>.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The research brief follows a consistent structure:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Summary\u003C/strong> — A concise overview of the topic and key takeaways\u003C/li>\n\u003Cli>\u003Cstrong>Background\u003C/strong> — Context and motivation for the research area\u003C/li>\n\u003Cli>\u003Cstrong>Key Findings\u003C/strong> — The main results organized by theme, with inline citations\u003C/li>\n\u003Cli>\u003Cstrong>Open Questions\u003C/strong> — Unresolved issues and promising research directions\u003C/li>\n\u003Cli>\u003Cstrong>References\u003C/strong> — Full citation list with links to source papers and articles\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"customization\">Customization\u003C/h2>\n\u003Cp>You can steer the research by being specific in your prompt. Narrow topics produce more focused briefs. Broad topics produce survey-style overviews. You can also specify constraints like “focus on papers from 2024” or “only consider empirical results” to guide the agents.\u003C/p>",{"headings":506,"localImagePaths":511,"remoteImagePaths":512,"frontmatter":513,"imagePaths":514},[507,508,509,510],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":352,"text":353},[],[],{"title":498,"description":499,"section":451,"order":17},[],"workflows/deep-research.md","tools/web-search",{"id":516,"data":518,"body":521,"filePath":522,"digest":523,"rendered":524,"legacyId":545},{"title":519,"description":520,"section":331,"order":26},"Web Search","Web search routing, configuration, and usage within Feynman.","Feynman's web search tool retrieves current information from the web during research workflows. It supports multiple simultaneous queries, domain filtering, recency filtering, and optional full-page content retrieval. The researcher agent uses web search alongside AlphaXiv to gather evidence from non-academic sources like blog posts, documentation, news, and code repositories.\n\n## Routing modes\n\nFeynman supports three web search backends. You can configure which one to use or let Feynman choose automatically:\n\n| Mode | Description |\n| --- | --- |\n| `auto` | Prefer Perplexity when configured, fall back to Gemini |\n| `perplexity` | Force Perplexity Sonar for all web searches |\n| `gemini` | Force Gemini grounding (default, zero-config) |\n\n## Default behavior\n\nThe default path is zero-config Gemini grounding via a signed-in Chromium profile. No API keys are required. This works on macOS and Linux where a Chromium-based browser is installed and signed in to a Google account.\n\nFor headless environments, CI pipelines, or servers without a browser, configure an explicit API key for either Perplexity or Gemini in `~/.feynman/web-search.json`.\n\n## Configuration\n\nCheck the current search configuration:\n\n```bash\nfeynman search status\n```\n\nEdit `~/.feynman/web-search.json` to configure the backend:\n\n```json\n{\n \"route\": \"auto\",\n \"perplexityApiKey\": \"pplx-...\",\n \"geminiApiKey\": \"AIza...\"\n}\n```\n\nSet `route` to `auto`, `perplexity`, or `gemini`. When using `auto`, Feynman prefers Perplexity if a key is present, then falls back to Gemini.\n\n## Search features\n\nThe web search tool supports several capabilities that the researcher agent leverages automatically:\n\n- **Multiple queries** -- Send 2-4 varied-angle queries simultaneously for broader coverage of a topic\n- **Domain filtering** -- Restrict results to specific domains like `arxiv.org`, `github.com`, or `nature.com`\n- **Recency filtering** -- Filter results by date, useful for fast-moving topics where only recent work matters\n- **Full content retrieval** -- Fetch complete page content for the most important results rather than relying on snippets\n\n## When it runs\n\nWeb search is used automatically by researcher agents during workflows. You do not need to invoke it directly. The researcher decides when to use web search versus paper search based on the topic and source availability. Academic topics lean toward AlphaXiv; engineering and applied topics lean toward web search.","src/content/docs/tools/web-search.md","98f96bb230fcf6c9",{"html":525,"metadata":526},"\u003Cp>Feynman’s web search tool retrieves current information from the web during research workflows. It supports multiple simultaneous queries, domain filtering, recency filtering, and optional full-page content retrieval. The researcher agent uses web search alongside AlphaXiv to gather evidence from non-academic sources like blog posts, documentation, news, and code repositories.\u003C/p>\n\u003Ch2 id=\"routing-modes\">Routing modes\u003C/h2>\n\u003Cp>Feynman supports three web search backends. You can configure which one to use or let Feynman choose automatically:\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 for all web searches\u003C/td>\u003C/tr>\u003Ctr>\u003Ctd>\u003Ccode>gemini\u003C/code>\u003C/td>\u003Ctd>Force Gemini grounding (default, zero-config)\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 grounding via a signed-in Chromium profile. No API keys are required. This works on macOS and Linux where a Chromium-based browser is installed and signed in to a Google account.\u003C/p>\n\u003Cp>For headless environments, CI pipelines, or servers without a browser, configure an explicit API key for either Perplexity or Gemini in \u003Ccode>~/.feynman/web-search.json\u003C/code>.\u003C/p>\n\u003Ch2 id=\"configuration\">Configuration\u003C/h2>\n\u003Cp>Check the current search configuration:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> search\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> status\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Edit \u003Ccode>~/.feynman/web-search.json\u003C/code> to configure the backend:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"json\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">{\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">route\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">auto\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">perplexityApiKey\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">pplx-...\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">,\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#F57D26;--shiki-dark:#E69875\">geminiApiKey\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">:\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\"> \"\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">AIza...\u003C/span>\u003Cspan style=\"color:#939F91;--shiki-dark:#859289\">\"\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#5C6A72;--shiki-dark:#D3C6AA\">}\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>Set \u003Ccode>route\u003C/code> to \u003Ccode>auto\u003C/code>, \u003Ccode>perplexity\u003C/code>, or \u003Ccode>gemini\u003C/code>. When using \u003Ccode>auto\u003C/code>, Feynman prefers Perplexity if a key is present, then falls back to Gemini.\u003C/p>\n\u003Ch2 id=\"search-features\">Search features\u003C/h2>\n\u003Cp>The web search tool supports several capabilities that the researcher agent leverages automatically:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Multiple queries\u003C/strong> — Send 2-4 varied-angle queries simultaneously for broader coverage of a topic\u003C/li>\n\u003Cli>\u003Cstrong>Domain filtering\u003C/strong> — Restrict results to specific domains like \u003Ccode>arxiv.org\u003C/code>, \u003Ccode>github.com\u003C/code>, or \u003Ccode>nature.com\u003C/code>\u003C/li>\n\u003Cli>\u003Cstrong>Recency filtering\u003C/strong> — Filter results by date, useful for fast-moving topics where only recent work matters\u003C/li>\n\u003Cli>\u003Cstrong>Full content retrieval\u003C/strong> — Fetch complete page content for the most important results rather than relying on snippets\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"when-it-runs\">When it runs\u003C/h2>\n\u003Cp>Web search is used automatically by researcher agents during workflows. You do not need to invoke it directly. The researcher decides when to use web search versus paper search based on the topic and source availability. Academic topics lean toward AlphaXiv; engineering and applied topics lean toward web search.\u003C/p>",{"headings":527,"localImagePaths":541,"remoteImagePaths":542,"frontmatter":543,"imagePaths":544},[528,531,534,535,538],{"depth":26,"slug":529,"text":530},"routing-modes","Routing modes",{"depth":26,"slug":532,"text":533},"default-behavior","Default behavior",{"depth":26,"slug":437,"text":129},{"depth":26,"slug":536,"text":537},"search-features","Search features",{"depth":26,"slug":539,"text":540},"when-it-runs","When it runs",[],[],{"title":519,"description":520,"section":331,"order":26},[],"tools/web-search.md","workflows/compare",{"id":546,"data":548,"body":552,"filePath":553,"digest":554,"rendered":555,"legacyId":567},{"title":549,"description":550,"section":451,"order":551},"Source Comparison","Compare multiple sources and produce an agreement/disagreement matrix.",6,"The source comparison workflow analyzes multiple papers, articles, or documents side by side and produces a structured matrix showing where they agree, disagree, and differ in methodology. It is useful for understanding conflicting results, evaluating competing approaches, and identifying which claims have broad support versus limited evidence.\n\n## Usage\n\nFrom the REPL:\n\n```\n/compare \"GPT-4 vs Claude vs Gemini on reasoning benchmarks\"\n```\n\n```\n/compare arxiv:2401.12345 arxiv:2402.67890 arxiv:2403.11111\n```\n\nFrom the CLI:\n\n```bash\nfeynman compare \"topic or list of sources\"\n```\n\nYou can provide a topic and let Feynman find the sources, or list specific papers and documents for a targeted comparison.\n\n## How it works\n\nThe comparison workflow begins by identifying or retrieving the sources to compare. If you provide a topic, the researcher agents find the most relevant and contrasting papers. If you provide specific IDs or files, they are used directly.\n\nEach source is analyzed independently first: the researcher agents extract claims, results, methodology, and limitations from each document. Then the comparison engine aligns claims across sources -- identifying where two papers make the same claim (agreement), where they report contradictory results (disagreement), and where they measure different things entirely (non-overlapping scope).\n\nThe alignment step handles the nuance that papers often measure slightly different quantities or use different evaluation protocols. The comparison explicitly notes when an apparent disagreement might be explained by methodological differences rather than genuine conflicting results.\n\n## Output format\n\nThe comparison produces:\n\n- **Source Summaries** -- One-paragraph summary of each source's key contributions\n- **Agreement Matrix** -- Claims supported by multiple sources with citation evidence\n- **Disagreement Matrix** -- Conflicting claims with analysis of why sources diverge\n- **Methodology Differences** -- How the sources differ in approach, data, and evaluation\n- **Synthesis** -- An overall assessment of which claims are well-supported and which remain contested\n\n## When to use it\n\nUse `/compare` when you encounter contradictory results in the literature, when evaluating competing approaches to the same problem, or when you need to understand how different research groups frame the same topic. It is also useful for writing related work sections where you need to accurately characterize the state of debate.","src/content/docs/workflows/compare.md","2ce03f852c0bb425",{"html":556,"metadata":557},"\u003Cp>The source comparison workflow analyzes multiple papers, articles, or documents side by side and produces a structured matrix showing where they agree, disagree, and differ in methodology. It is useful for understanding conflicting results, evaluating competing approaches, and identifying which claims have broad support versus limited evidence.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/compare \"GPT-4 vs Claude vs Gemini on reasoning benchmarks\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/compare arxiv:2401.12345 arxiv:2402.67890 arxiv:2403.11111\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> compare\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"topic or list of sources\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You can provide a topic and let Feynman find the sources, or list specific papers and documents for a targeted comparison.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The comparison workflow begins by identifying or retrieving the sources to compare. If you provide a topic, the researcher agents find the most relevant and contrasting papers. If you provide specific IDs or files, they are used directly.\u003C/p>\n\u003Cp>Each source is analyzed independently first: the researcher agents extract claims, results, methodology, and limitations from each document. Then the comparison engine aligns claims across sources — identifying where two papers make the same claim (agreement), where they report contradictory results (disagreement), and where they measure different things entirely (non-overlapping scope).\u003C/p>\n\u003Cp>The alignment step handles the nuance that papers often measure slightly different quantities or use different evaluation protocols. The comparison explicitly notes when an apparent disagreement might be explained by methodological differences rather than genuine conflicting results.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The comparison produces:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Source Summaries\u003C/strong> — One-paragraph summary of each source’s key contributions\u003C/li>\n\u003Cli>\u003Cstrong>Agreement Matrix\u003C/strong> — Claims supported by multiple sources with citation evidence\u003C/li>\n\u003Cli>\u003Cstrong>Disagreement Matrix\u003C/strong> — Conflicting claims with analysis of why sources diverge\u003C/li>\n\u003Cli>\u003Cstrong>Methodology Differences\u003C/strong> — How the sources differ in approach, data, and evaluation\u003C/li>\n\u003Cli>\u003Cstrong>Synthesis\u003C/strong> — An overall assessment of which claims are well-supported and which remain contested\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"when-to-use-it\">When to use it\u003C/h2>\n\u003Cp>Use \u003Ccode>/compare\u003C/code> when you encounter contradictory results in the literature, when evaluating competing approaches to the same problem, or when you need to understand how different research groups frame the same topic. It is also useful for writing related work sections where you need to accurately characterize the state of debate.\u003C/p>",{"headings":558,"localImagePaths":563,"remoteImagePaths":564,"frontmatter":565,"imagePaths":566},[559,560,561,562],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":407,"text":408},[],[],{"title":549,"description":550,"section":451,"order":551},[],"workflows/compare.md","workflows/draft",{"id":568,"data":570,"body":574,"filePath":575,"digest":576,"rendered":577,"legacyId":591},{"title":571,"description":572,"section":451,"order":573},"Draft Writing","Generate a paper-style draft from research findings and session context.",7,"The draft writing workflow generates structured academic-style documents from your research findings. It uses the writer agent to produce well-organized prose with proper citations, sections, and formatting suitable for papers, reports, or blog posts.\n\n## Usage\n\nFrom the REPL:\n\n```\n/draft A survey of retrieval-augmented generation techniques\n```\n\n```\n/draft --from-session\n```\n\nFrom the CLI:\n\n```bash\nfeynman draft \"A survey of retrieval-augmented generation techniques\"\n```\n\nWhen used with `--from-session`, the writer draws from the current session's research findings, making it a natural follow-up to a deep research or literature review workflow.\n\n## How it works\n\nThe draft workflow leverages the writer agent, which specializes in producing structured academic prose. When given a topic, it first consults the researcher agents to gather source material, then organizes the findings into a coherent document with proper narrative flow.\n\nWhen working from existing session context (after a deep research or literature review), the writer skips the research phase and works directly with the findings already gathered. This produces a more focused draft because the source material has already been vetted and organized.\n\nThe writer pays attention to academic conventions: claims are attributed to their sources with inline citations, methodology sections describe procedures precisely, and limitations are discussed honestly. The draft includes placeholder sections for any content the writer cannot generate from available sources, clearly marking what needs human input.\n\n## Output format\n\nThe draft follows standard academic structure:\n\n- **Abstract** -- Concise summary of the document's scope and findings\n- **Introduction** -- Motivation, context, and contribution statement\n- **Body Sections** -- Organized by topic with subsections as needed\n- **Discussion** -- Interpretation of findings and implications\n- **Limitations** -- Honest assessment of scope and gaps\n- **References** -- Complete bibliography in a consistent citation format\n\n## Preview and iteration\n\nAfter generating the draft, use `/preview` to render it as HTML or PDF with proper formatting, math rendering, and typography. You can iterate on the draft by asking Feynman to revise specific sections, add more detail, or restructure the argument.","src/content/docs/workflows/draft.md","483acd4ea76d7663",{"html":578,"metadata":579},"\u003Cp>The draft writing workflow generates structured academic-style documents from your research findings. It uses the writer agent to produce well-organized prose with proper citations, sections, and formatting suitable for papers, reports, or blog posts.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/draft A survey of retrieval-augmented generation techniques\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/draft --from-session\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> draft\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"A survey of retrieval-augmented generation techniques\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>When used with \u003Ccode>--from-session\u003C/code>, the writer draws from the current session’s research findings, making it a natural follow-up to a deep research or literature review workflow.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The draft workflow leverages the writer agent, which specializes in producing structured academic prose. When given a topic, it first consults the researcher agents to gather source material, then organizes the findings into a coherent document with proper narrative flow.\u003C/p>\n\u003Cp>When working from existing session context (after a deep research or literature review), the writer skips the research phase and works directly with the findings already gathered. This produces a more focused draft because the source material has already been vetted and organized.\u003C/p>\n\u003Cp>The writer pays attention to academic conventions: claims are attributed to their sources with inline citations, methodology sections describe procedures precisely, and limitations are discussed honestly. The draft includes placeholder sections for any content the writer cannot generate from available sources, clearly marking what needs human input.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The draft follows standard academic structure:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Abstract\u003C/strong> — Concise summary of the document’s scope and findings\u003C/li>\n\u003Cli>\u003Cstrong>Introduction\u003C/strong> — Motivation, context, and contribution statement\u003C/li>\n\u003Cli>\u003Cstrong>Body Sections\u003C/strong> — Organized by topic with subsections as needed\u003C/li>\n\u003Cli>\u003Cstrong>Discussion\u003C/strong> — Interpretation of findings and implications\u003C/li>\n\u003Cli>\u003Cstrong>Limitations\u003C/strong> — Honest assessment of scope and gaps\u003C/li>\n\u003Cli>\u003Cstrong>References\u003C/strong> — Complete bibliography in a consistent citation format\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"preview-and-iteration\">Preview and iteration\u003C/h2>\n\u003Cp>After generating the draft, use \u003Ccode>/preview\u003C/code> to render it as HTML or PDF with proper formatting, math rendering, and typography. You can iterate on the draft by asking Feynman to revise specific sections, add more detail, or restructure the argument.\u003C/p>",{"headings":580,"localImagePaths":587,"remoteImagePaths":588,"frontmatter":589,"imagePaths":590},[581,582,583,584],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":585,"text":586},"preview-and-iteration","Preview and iteration",[],[],{"title":571,"description":572,"section":451,"order":573},[],"workflows/draft.md","workflows/watch",{"id":592,"data":594,"body":598,"filePath":599,"digest":600,"rendered":601,"legacyId":616},{"title":595,"description":596,"section":451,"order":597},"Watch","Set up recurring research monitoring on a topic.",9,"The watch workflow sets up recurring research monitoring that periodically checks for new papers, articles, and developments on a topic you care about. It notifies you when something relevant appears and can automatically summarize new findings.\n\n## Usage\n\nFrom the REPL:\n\n```\n/watch New developments in state space models for sequence modeling\n```\n\nFrom the CLI:\n\n```bash\nfeynman watch \"New developments in state space models for sequence modeling\"\n```\n\nAfter setting up a watch, Feynman periodically runs searches on the topic and alerts you when it finds new relevant material.\n\n## How it works\n\nThe watch workflow is built on `pi-schedule-prompt`, which manages scheduled and recurring tasks. When you create a watch, Feynman stores the topic and search parameters, then runs a lightweight search at regular intervals (default: daily).\n\nEach check searches AlphaXiv for new papers and the web for new articles matching your topic. Results are compared against what was found in previous checks to surface only genuinely new material. When new items are found, Feynman produces a brief summary of each and stores it in your session history.\n\nThe watch is smart about relevance. It does not just keyword-match -- it uses the same researcher agent that powers deep research to evaluate whether new papers are genuinely relevant to your topic or just superficially related. This keeps the signal-to-noise ratio high even for broad topics.\n\n## Managing watches\n\nList active watches:\n\n```\n/jobs\n```\n\nThe `/jobs` command shows all active watches along with their schedule, last check time, and number of new items found. You can pause, resume, or delete watches from within the REPL.\n\n## Output format\n\nEach watch check produces:\n\n- **New Papers** -- Titles, authors, and one-paragraph summaries of newly discovered papers\n- **New Articles** -- Relevant blog posts, documentation updates, or news articles\n- **Relevance Notes** -- Why each item was flagged as relevant to your watch topic\n\n## When to use it\n\nUse `/watch` to stay current on a research area without manually searching every day. It is particularly useful for fast-moving fields where new papers appear frequently, for tracking specific research groups or topics related to your own work, and for monitoring the literature while you focus on other tasks.","src/content/docs/workflows/watch.md","8881197eaf4231b9",{"html":602,"metadata":603},"\u003Cp>The watch workflow sets up recurring research monitoring that periodically checks for new papers, articles, and developments on a topic you care about. It notifies you when something relevant appears and can automatically summarize new findings.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/watch New developments in state space models for sequence modeling\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> watch\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"New developments in state space models for sequence modeling\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>After setting up a watch, Feynman periodically runs searches on the topic and alerts you when it finds new relevant material.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The watch workflow is built on \u003Ccode>pi-schedule-prompt\u003C/code>, which manages scheduled and recurring tasks. When you create a watch, Feynman stores the topic and search parameters, then runs a lightweight search at regular intervals (default: daily).\u003C/p>\n\u003Cp>Each check searches AlphaXiv for new papers and the web for new articles matching your topic. Results are compared against what was found in previous checks to surface only genuinely new material. When new items are found, Feynman produces a brief summary of each and stores it in your session history.\u003C/p>\n\u003Cp>The watch is smart about relevance. It does not just keyword-match — it uses the same researcher agent that powers deep research to evaluate whether new papers are genuinely relevant to your topic or just superficially related. This keeps the signal-to-noise ratio high even for broad topics.\u003C/p>\n\u003Ch2 id=\"managing-watches\">Managing watches\u003C/h2>\n\u003Cp>List active watches:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/jobs\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>The \u003Ccode>/jobs\u003C/code> command shows all active watches along with their schedule, last check time, and number of new items found. You can pause, resume, or delete watches from within the REPL.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>Each watch check produces:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>New Papers\u003C/strong> — Titles, authors, and one-paragraph summaries of newly discovered papers\u003C/li>\n\u003Cli>\u003Cstrong>New Articles\u003C/strong> — Relevant blog posts, documentation updates, or news articles\u003C/li>\n\u003Cli>\u003Cstrong>Relevance Notes\u003C/strong> — Why each item was flagged as relevant to your watch topic\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"when-to-use-it\">When to use it\u003C/h2>\n\u003Cp>Use \u003Ccode>/watch\u003C/code> to stay current on a research area without manually searching every day. It is particularly useful for fast-moving fields where new papers appear frequently, for tracking specific research groups or topics related to your own work, and for monitoring the literature while you focus on other tasks.\u003C/p>",{"headings":604,"localImagePaths":612,"remoteImagePaths":613,"frontmatter":614,"imagePaths":615},[605,606,607,610,611],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":608,"text":609},"managing-watches","Managing watches",{"depth":26,"slug":466,"text":467},{"depth":26,"slug":407,"text":408},[],[],{"title":595,"description":596,"section":451,"order":597},[],"workflows/watch.md","workflows/review",{"id":617,"data":619,"body":622,"filePath":623,"digest":624,"rendered":625,"legacyId":637},{"title":620,"description":621,"section":451,"order":76},"Peer Review","Simulate a rigorous peer review with severity-graded feedback.","The peer review workflow simulates a thorough academic peer review of a paper, draft, or research artifact. It produces severity-graded feedback with inline annotations, covering methodology, claims, writing quality, and reproducibility.\n\n## Usage\n\nFrom the REPL:\n\n```\n/review arxiv:2401.12345\n```\n\n```\n/review ~/papers/my-draft.pdf\n```\n\nFrom the CLI:\n\n```bash\nfeynman review arxiv:2401.12345\nfeynman review my-draft.md\n```\n\nYou can pass an arXiv ID, a URL, or a local file path. For arXiv papers, Feynman fetches the full PDF through AlphaXiv.\n\n## How it works\n\nThe review workflow assigns the reviewer agent to read the document end-to-end and evaluate it against standard academic criteria. The reviewer examines the paper's claims, checks whether the methodology supports the conclusions, evaluates the experimental design for potential confounds, and assesses the clarity and completeness of the writing.\n\nEach piece of feedback is assigned a severity level: **critical** (fundamental issues that undermine the paper's validity), **major** (significant problems that should be addressed), **minor** (suggestions for improvement), or **nit** (stylistic or formatting issues). This grading helps you triage feedback and focus on what matters most.\n\nThe reviewer also produces a summary assessment with an overall recommendation and a confidence score indicating how certain it is about each finding. When the reviewer identifies a claim that cannot be verified from the paper alone, it flags it as needing additional evidence.\n\n## Output format\n\nThe review output includes:\n\n- **Summary Assessment** -- Overall evaluation and recommendation\n- **Strengths** -- What the paper does well\n- **Critical Issues** -- Fundamental problems that need to be addressed\n- **Major Issues** -- Significant concerns with suggested fixes\n- **Minor Issues** -- Smaller improvements and suggestions\n- **Inline Annotations** -- Specific comments tied to sections of the document\n\n## Customization\n\nYou can focus the review by specifying what to examine: \"focus on the statistical methodology\" or \"check the claims in Section 4 against the experimental results.\" The reviewer adapts its analysis to your priorities while still performing a baseline check of the full document.","src/content/docs/workflows/review.md","0f84fd2135001da2",{"html":626,"metadata":627},"\u003Cp>The peer review workflow simulates a thorough academic peer review of a paper, draft, or research artifact. It produces severity-graded feedback with inline annotations, covering methodology, claims, writing quality, and reproducibility.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/review arxiv:2401.12345\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/review ~/papers/my-draft.pdf\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> review\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> arxiv:2401.12345\u003C/span>\u003C/span>\n\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> review\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> my-draft.md\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You can pass an arXiv ID, a URL, or a local file path. For arXiv papers, Feynman fetches the full PDF through AlphaXiv.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The review workflow assigns the reviewer agent to read the document end-to-end and evaluate it against standard academic criteria. The reviewer examines the paper’s claims, checks whether the methodology supports the conclusions, evaluates the experimental design for potential confounds, and assesses the clarity and completeness of the writing.\u003C/p>\n\u003Cp>Each piece of feedback is assigned a severity level: \u003Cstrong>critical\u003C/strong> (fundamental issues that undermine the paper’s validity), \u003Cstrong>major\u003C/strong> (significant problems that should be addressed), \u003Cstrong>minor\u003C/strong> (suggestions for improvement), or \u003Cstrong>nit\u003C/strong> (stylistic or formatting issues). This grading helps you triage feedback and focus on what matters most.\u003C/p>\n\u003Cp>The reviewer also produces a summary assessment with an overall recommendation and a confidence score indicating how certain it is about each finding. When the reviewer identifies a claim that cannot be verified from the paper alone, it flags it as needing additional evidence.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The review output includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Summary Assessment\u003C/strong> — Overall evaluation and recommendation\u003C/li>\n\u003Cli>\u003Cstrong>Strengths\u003C/strong> — What the paper does well\u003C/li>\n\u003Cli>\u003Cstrong>Critical Issues\u003C/strong> — Fundamental problems that need to be addressed\u003C/li>\n\u003Cli>\u003Cstrong>Major Issues\u003C/strong> — Significant concerns with suggested fixes\u003C/li>\n\u003Cli>\u003Cstrong>Minor Issues\u003C/strong> — Smaller improvements and suggestions\u003C/li>\n\u003Cli>\u003Cstrong>Inline Annotations\u003C/strong> — Specific comments tied to sections of the document\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"customization\">Customization\u003C/h2>\n\u003Cp>You can focus the review by specifying what to examine: “focus on the statistical methodology” or “check the claims in Section 4 against the experimental results.” The reviewer adapts its analysis to your priorities while still performing a baseline check of the full document.\u003C/p>",{"headings":628,"localImagePaths":633,"remoteImagePaths":634,"frontmatter":635,"imagePaths":636},[629,630,631,632],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":352,"text":353},[],[],{"title":620,"description":621,"section":451,"order":76},[],"workflows/review.md","workflows/literature-review",{"id":638,"data":640,"body":643,"filePath":644,"digest":645,"rendered":646,"legacyId":658},{"title":641,"description":642,"section":451,"order":26},"Literature Review","Run a structured literature review with consensus mapping and gap analysis.","The literature review workflow produces a structured survey of the academic landscape on a given topic. Unlike deep research which aims for a comprehensive brief, the literature review focuses specifically on mapping the state of the field -- what researchers agree on, where they disagree, and what remains unexplored.\n\n## Usage\n\nFrom the REPL:\n\n```\n/lit Scaling laws for language model performance\n```\n\nFrom the CLI:\n\n```bash\nfeynman lit \"Scaling laws for language model performance\"\n```\n\n## How it works\n\nThe literature review workflow begins by having researcher agents search for papers on the topic across AlphaXiv and the web. The agents prioritize survey papers, highly-cited foundational work, and recent publications to capture both established knowledge and the current frontier.\n\nAfter gathering sources, the agents extract claims, results, and methodology from each paper. The synthesis step then organizes findings into a structured review that maps out where the community has reached consensus, where active debate exists, and where gaps in the literature remain.\n\nThe output is organized chronologically and thematically, showing how ideas evolved over time and how different research groups approach the problem differently. Citation counts and publication venues are used as signals for weighting claims, though the review explicitly notes when influential work contradicts the mainstream view.\n\n## Output format\n\nThe literature review produces:\n\n- **Scope and Methodology** -- What was searched and how papers were selected\n- **Consensus** -- Claims that most papers agree on, with supporting citations\n- **Disagreements** -- Active debates where papers present conflicting evidence or interpretations\n- **Open Questions** -- Topics that the literature has not adequately addressed\n- **Timeline** -- Key milestones and how the field evolved\n- **References** -- Complete bibliography organized by relevance\n\n## When to use it\n\nUse `/lit` when you need a map of the research landscape rather than a deep dive into a specific question. It is particularly useful at the start of a new research project when you need to understand what has already been done, or when preparing a related work section for a paper.","src/content/docs/workflows/literature-review.md","3028bede4cee6cf0",{"html":647,"metadata":648},"\u003Cp>The literature review workflow produces a structured survey of the academic landscape on a given topic. Unlike deep research which aims for a comprehensive brief, the literature review focuses specifically on mapping the state of the field — what researchers agree on, where they disagree, and what remains unexplored.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/lit Scaling laws for language model performance\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> lit\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"Scaling laws for language model performance\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The literature review workflow begins by having researcher agents search for papers on the topic across AlphaXiv and the web. The agents prioritize survey papers, highly-cited foundational work, and recent publications to capture both established knowledge and the current frontier.\u003C/p>\n\u003Cp>After gathering sources, the agents extract claims, results, and methodology from each paper. The synthesis step then organizes findings into a structured review that maps out where the community has reached consensus, where active debate exists, and where gaps in the literature remain.\u003C/p>\n\u003Cp>The output is organized chronologically and thematically, showing how ideas evolved over time and how different research groups approach the problem differently. Citation counts and publication venues are used as signals for weighting claims, though the review explicitly notes when influential work contradicts the mainstream view.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The literature review produces:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Scope and Methodology\u003C/strong> — What was searched and how papers were selected\u003C/li>\n\u003Cli>\u003Cstrong>Consensus\u003C/strong> — Claims that most papers agree on, with supporting citations\u003C/li>\n\u003Cli>\u003Cstrong>Disagreements\u003C/strong> — Active debates where papers present conflicting evidence or interpretations\u003C/li>\n\u003Cli>\u003Cstrong>Open Questions\u003C/strong> — Topics that the literature has not adequately addressed\u003C/li>\n\u003Cli>\u003Cstrong>Timeline\u003C/strong> — Key milestones and how the field evolved\u003C/li>\n\u003Cli>\u003Cstrong>References\u003C/strong> — Complete bibliography organized by relevance\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"when-to-use-it\">When to use it\u003C/h2>\n\u003Cp>Use \u003Ccode>/lit\u003C/code> when you need a map of the research landscape rather than a deep dive into a specific question. It is particularly useful at the start of a new research project when you need to understand what has already been done, or when preparing a related work section for a paper.\u003C/p>",{"headings":649,"localImagePaths":654,"remoteImagePaths":655,"frontmatter":656,"imagePaths":657},[650,651,652,653],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":407,"text":408},[],[],{"title":641,"description":642,"section":451,"order":26},[],"workflows/literature-review.md","workflows/replication",{"id":659,"data":661,"body":665,"filePath":666,"digest":667,"rendered":668,"legacyId":682},{"title":662,"description":663,"section":451,"order":664},"Replication","Plan or execute a replication of a paper's experiments and claims.",5,"The replication workflow helps you plan and execute reproductions of published experiments, benchmark results, or specific claims. It generates a detailed replication plan, identifies potential pitfalls, and can guide you through the execution step by step.\n\n## Usage\n\nFrom the REPL:\n\n```\n/replicate arxiv:2401.12345\n```\n\n```\n/replicate \"The claim that sparse attention achieves 95% of dense attention quality at 60% compute\"\n```\n\nFrom the CLI:\n\n```bash\nfeynman replicate \"paper or claim\"\n```\n\nYou can point the workflow at a full paper for a comprehensive replication plan, or at a specific claim for a focused reproduction.\n\n## How it works\n\nThe replication workflow starts with the researcher agent reading the target paper and extracting every detail needed for reproduction: model architecture, hyperparameters, training schedule, dataset preparation, evaluation protocol, and hardware requirements. It cross-references these details against the codebase (if available) using the same machinery as the code audit workflow.\n\nNext, the workflow generates a structured replication plan that breaks the experiment into discrete steps, estimates compute and time requirements, and identifies where the paper is underspecified. For each underspecified detail, it suggests reasonable defaults based on common practices in the field and flags the assumption as a potential source of divergence.\n\nThe plan also includes a risk assessment: which parts of the experiment are most likely to cause replication failure, what tolerance to expect for numerical results, and which claims are most sensitive to implementation details.\n\n## Output format\n\nThe replication plan includes:\n\n- **Requirements** -- Hardware, software, data, and estimated compute cost\n- **Step-by-step Plan** -- Ordered steps from environment setup through final evaluation\n- **Underspecified Details** -- Where the paper leaves out information needed for replication\n- **Risk Assessment** -- Which steps are most likely to cause divergence from reported results\n- **Success Criteria** -- What results would constitute a successful replication\n\n## Iterative execution\n\nAfter generating the plan, you can execute the replication interactively. Feynman walks you through each step, helps you write the code, monitors training runs, and compares intermediate results against the paper's reported values. When results diverge, it helps diagnose whether the cause is an implementation difference, a hyperparameter mismatch, or a genuine replication failure.","src/content/docs/workflows/replication.md","d477e6df15163fff",{"html":669,"metadata":670},"\u003Cp>The replication workflow helps you plan and execute reproductions of published experiments, benchmark results, or specific claims. It generates a detailed replication plan, identifies potential pitfalls, and can guide you through the execution step by step.\u003C/p>\n\u003Ch2 id=\"usage\">Usage\u003C/h2>\n\u003Cp>From the REPL:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/replicate arxiv:2401.12345\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"plaintext\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>/replicate \"The claim that sparse attention achieves 95% of dense attention quality at 60% compute\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>From the CLI:\u003C/p>\n\u003Cpre class=\"astro-code astro-code-themes everforest-light everforest-dark\" style=\"background-color:#fdf6e3;--shiki-dark-bg:#2d353b;color:#5c6a72;--shiki-dark:#d3c6aa; overflow-x: auto;\" tabindex=\"0\" data-language=\"bash\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\">feynman\u003C/span>\u003Cspan style=\"color:#DFA000;--shiki-dark:#DBBC7F\"> replicate\u003C/span>\u003Cspan style=\"color:#8DA101;--shiki-dark:#A7C080\"> \"paper or claim\"\u003C/span>\u003C/span>\u003C/code>\u003C/pre>\n\u003Cp>You can point the workflow at a full paper for a comprehensive replication plan, or at a specific claim for a focused reproduction.\u003C/p>\n\u003Ch2 id=\"how-it-works\">How it works\u003C/h2>\n\u003Cp>The replication workflow starts with the researcher agent reading the target paper and extracting every detail needed for reproduction: model architecture, hyperparameters, training schedule, dataset preparation, evaluation protocol, and hardware requirements. It cross-references these details against the codebase (if available) using the same machinery as the code audit workflow.\u003C/p>\n\u003Cp>Next, the workflow generates a structured replication plan that breaks the experiment into discrete steps, estimates compute and time requirements, and identifies where the paper is underspecified. For each underspecified detail, it suggests reasonable defaults based on common practices in the field and flags the assumption as a potential source of divergence.\u003C/p>\n\u003Cp>The plan also includes a risk assessment: which parts of the experiment are most likely to cause replication failure, what tolerance to expect for numerical results, and which claims are most sensitive to implementation details.\u003C/p>\n\u003Ch2 id=\"output-format\">Output format\u003C/h2>\n\u003Cp>The replication plan includes:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Requirements\u003C/strong> — Hardware, software, data, and estimated compute cost\u003C/li>\n\u003Cli>\u003Cstrong>Step-by-step Plan\u003C/strong> — Ordered steps from environment setup through final evaluation\u003C/li>\n\u003Cli>\u003Cstrong>Underspecified Details\u003C/strong> — Where the paper leaves out information needed for replication\u003C/li>\n\u003Cli>\u003Cstrong>Risk Assessment\u003C/strong> — Which steps are most likely to cause divergence from reported results\u003C/li>\n\u003Cli>\u003Cstrong>Success Criteria\u003C/strong> — What results would constitute a successful replication\u003C/li>\n\u003C/ul>\n\u003Ch2 id=\"iterative-execution\">Iterative execution\u003C/h2>\n\u003Cp>After generating the plan, you can execute the replication interactively. Feynman walks you through each step, helps you write the code, monitors training runs, and compares intermediate results against the paper’s reported values. When results diverge, it helps diagnose whether the cause is an implementation difference, a hyperparameter mismatch, or a genuine replication failure.\u003C/p>",{"headings":671,"localImagePaths":678,"remoteImagePaths":679,"frontmatter":680,"imagePaths":681},[672,673,674,675],{"depth":26,"slug":340,"text":341},{"depth":26,"slug":349,"text":350},{"depth":26,"slug":466,"text":467},{"depth":26,"slug":676,"text":677},"iterative-execution","Iterative execution",[],[],{"title":662,"description":663,"section":451,"order":664},[],"workflows/replication.md"] \ No newline at end of file diff --git a/website/.astro/settings.json b/website/.astro/settings.json index 184a81e..4a40a02 100644 --- a/website/.astro/settings.json +++ b/website/.astro/settings.json @@ -1,5 +1,5 @@ { "_variables": { - "lastUpdateCheck": 1774305535217 + "lastUpdateCheck": 1774391908508 } } \ No newline at end of file diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 0000000..f52a46e --- /dev/null +++ b/website/.gitignore @@ -0,0 +1,23 @@ +# build output +dist/ +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/website/.prettierignore b/website/.prettierignore new file mode 100644 index 0000000..35bc32e --- /dev/null +++ b/website/.prettierignore @@ -0,0 +1,6 @@ +node_modules/ +coverage/ +.pnpm-store/ +pnpm-lock.yaml +package-lock.json +yarn.lock diff --git a/website/.prettierrc b/website/.prettierrc new file mode 100644 index 0000000..0b9ca38 --- /dev/null +++ b/website/.prettierrc @@ -0,0 +1,19 @@ +{ + "endOfLine": "lf", + "semi": false, + "singleQuote": false, + "tabWidth": 2, + "trailingComma": "es5", + "printWidth": 80, + "plugins": ["prettier-plugin-astro", "prettier-plugin-tailwindcss"], + "tailwindStylesheet": "src/styles/global.css", + "tailwindFunctions": ["cn", "cva"], + "overrides": [ + { + "files": "*.astro", + "options": { + "parser": "astro" + } + } + ] +} diff --git a/website/README.md b/website/README.md new file mode 100644 index 0000000..e17b0f0 --- /dev/null +++ b/website/README.md @@ -0,0 +1,36 @@ +# Astro + React + TypeScript + shadcn/ui + +This is a template for a new Astro project with React, TypeScript, and shadcn/ui. + +## Adding components + +To add components to your app, run the following command: + +```bash +npx shadcn@latest add button +``` + +This will place the ui components in the `src/components` directory. + +## Using components + +To use the components in your app, import them in an `.astro` file: + +```astro +--- +import { Button } from "@/components/ui/button" +--- + + + + + + Astro App + + +
+ +
+ + +``` diff --git a/website/astro.config.mjs b/website/astro.config.mjs index ca5daa7..4bf04ac 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -1,8 +1,15 @@ -import { defineConfig } from 'astro/config'; -import tailwind from '@astrojs/tailwind'; +// @ts-check +import tailwindcss from "@tailwindcss/vite" +import { defineConfig } from "astro/config" +import react from "@astrojs/react" + +// https://astro.build/config export default defineConfig({ - integrations: [tailwind()], + vite: { + plugins: [tailwindcss()], + }, + integrations: [react()], site: 'https://feynman.is', markdown: { shikiConfig: { @@ -12,4 +19,4 @@ export default defineConfig({ }, }, }, -}); +}) diff --git a/website/components.json b/website/components.json new file mode 100644 index 0000000..2bc1d8b --- /dev/null +++ b/website/components.json @@ -0,0 +1,25 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "radix-vega", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "", + "css": "src/styles/global.css", + "baseColor": "olive", + "cssVariables": true, + "prefix": "" + }, + "iconLibrary": "lucide", + "rtl": false, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils", + "ui": "@/components/ui", + "lib": "@/lib", + "hooks": "@/hooks" + }, + "menuColor": "default", + "menuAccent": "subtle", + "registries": {} +} diff --git a/website/eslint.config.js b/website/eslint.config.js new file mode 100644 index 0000000..2d58690 --- /dev/null +++ b/website/eslint.config.js @@ -0,0 +1,23 @@ +import js from "@eslint/js" +import globals from "globals" +import reactHooks from "eslint-plugin-react-hooks" +import reactRefresh from "eslint-plugin-react-refresh" +import tseslint from "typescript-eslint" +import { defineConfig, globalIgnores } from "eslint/config" + +export default defineConfig([ + globalIgnores(["dist", ".astro"]), + { + files: ["**/*.{ts,tsx}"], + extends: [ + js.configs.recommended, + tseslint.configs.recommended, + reactHooks.configs.flat.recommended, + reactRefresh.configs.vite, + ], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + }, + }, +]) diff --git a/website/package-lock.json b/website/package-lock.json index a09e7d7..576e2bd 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -1,29 +1,41 @@ { - "name": "feynman-website", + "name": "website", "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "feynman-website", + "name": "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" + "@astrojs/react": "^4.4.2", + "@fontsource-variable/ibm-plex-sans": "^5.2.8", + "@tailwindcss/vite": "^4.2.1", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "astro": "^5.18.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.6.0", + "radix-ui": "^1.4.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "shadcn": "^4.1.0", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.2.1", + "tw-animate-css": "^1.4.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "devDependencies": { + "@eslint/js": "^9.39.4", + "eslint": "^9.39.4", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^16.5.0", + "prettier": "^3.8.1", + "prettier-plugin-astro": "^0.14.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.1" } }, "node_modules/@astrojs/compiler": { @@ -79,19 +91,24 @@ "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==", + "node_modules/@astrojs/react": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.4.2.tgz", + "integrity": "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==", "license": "MIT", "dependencies": { - "autoprefixer": "^10.4.21", - "postcss": "^8.5.3", - "postcss-load-config": "^4.0.2" + "@vitejs/plugin-react": "^4.7.0", + "ultrahtml": "^1.6.0", + "vite": "^6.4.1" + }, + "engines": { + "node": "18.20.8 || ^20.3.0 || >=22.0.0" }, "peerDependencies": { - "astro": "^3.0.0 || ^4.0.0 || ^5.0.0", - "tailwindcss": "^3.0.24" + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, "node_modules/@astrojs/telemetry": { @@ -112,6 +129,227 @@ "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, + "node_modules/@babel/code-frame": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", + "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.28.5", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", + "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", + "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helpers": "^7.28.6", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/traverse": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/remapping": "^2.3.5", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.29.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", + "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.29.0", + "@babel/types": "^7.29.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz", + "integrity": "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.3" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", + "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.28.6", + "@babel/helper-validator-option": "^7.27.1", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz", + "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/helper-replace-supers": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/traverse": "^7.28.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.28.5.tgz", + "integrity": "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.5", + "@babel/types": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", + "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", + "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.28.6", + "@babel/helper-validator-identifier": "^7.28.5", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz", + "integrity": "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz", + "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz", + "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==", + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.28.5", + "@babel/helper-optimise-call-expression": "^7.27.1", + "@babel/traverse": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz", + "integrity": "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==", + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" + }, + "engines": { + "node": ">=6.9.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", @@ -130,6 +368,28 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-validator-option": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", + "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "license": "MIT", + "dependencies": { + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0" + }, + "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", @@ -145,6 +405,152 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", + "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", + "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", + "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", + "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-create-class-features-plugin": "^7.28.6", + "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", + "@babel/plugin-syntax-typescript": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-typescript": { + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", + "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-validator-option": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/plugin-transform-modules-commonjs": "^7.27.1", + "@babel/plugin-transform-typescript": "^7.28.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", + "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.28.6", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.29.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", + "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.0", + "@babel/generator": "^7.29.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.29.0", + "@babel/template": "^7.28.6", + "@babel/types": "^7.29.0", + "debug": "^4.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/types": { "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", @@ -170,6 +576,165 @@ "node": ">=18" } }, + "node_modules/@dotenvx/dotenvx": { + "version": "1.57.2", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.57.2.tgz", + "integrity": "sha512-lv9+UZPnl/KOvShepevLWm3+/wc1It5kgO5Q580evnvOFMZcgKVEYFwxlL7Ohl9my1yjTsWo28N3PJYUEO8wFQ==", + "license": "BSD-3-Clause", + "dependencies": { + "commander": "^11.1.0", + "dotenv": "^17.2.1", + "eciesjs": "^0.4.10", + "execa": "^5.1.1", + "fdir": "^6.2.0", + "ignore": "^5.3.0", + "object-treeify": "1.1.33", + "picomatch": "^4.0.2", + "which": "^4.0.0" + }, + "bin": { + "dotenvx": "src/cli/dotenvx.js" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/@dotenvx/dotenvx/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@dotenvx/dotenvx/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@ecies/ciphers": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.5.tgz", + "integrity": "sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==", + "license": "MIT", + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + }, + "peerDependencies": { + "@noble/ciphers": "^1.0.0" + } + }, "node_modules/@emnapi/runtime": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.1.tgz", @@ -596,6 +1161,274 @@ "node": ">=18" } }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz", + "integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.1", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz", + "integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", + "license": "MIT" + }, + "node_modules/@fontsource-variable/ibm-plex-sans": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@fontsource-variable/ibm-plex-sans/-/ibm-plex-sans-5.2.8.tgz", + "integrity": "sha512-n5PF2iFa0CZT0QYTPzxvZ39opC9LnU0zdoRccoADbs+Dtsd+lbXOZF7RNuIPHcQX1dKjF63sxnRImQIB5eD0Ag==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } + }, + "node_modules/@hono/node-server": { + "version": "1.19.11", + "resolved": "https://registry.npmjs.org/@hono/node-server/-/node-server-1.19.11.tgz", + "integrity": "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g==", + "license": "MIT", + "engines": { + "node": ">=18.14.1" + }, + "peerDependencies": { + "hono": "^4" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@img/colour": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.1.0.tgz", @@ -607,9 +1440,9 @@ } }, "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==", + "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" ], @@ -625,13 +1458,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" + "@img/sharp-libvips-darwin-arm64": "1.2.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==", + "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" ], @@ -647,13 +1480,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" + "@img/sharp-libvips-darwin-x64": "1.2.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==", + "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" ], @@ -667,9 +1500,9 @@ } }, "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==", + "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" ], @@ -683,9 +1516,9 @@ } }, "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==", + "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" ], @@ -699,9 +1532,9 @@ } }, "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==", + "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" ], @@ -747,9 +1580,9 @@ } }, "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==", + "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" ], @@ -763,9 +1596,9 @@ } }, "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==", + "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" ], @@ -779,9 +1612,9 @@ } }, "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==", + "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" ], @@ -795,9 +1628,9 @@ } }, "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==", + "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" ], @@ -811,9 +1644,9 @@ } }, "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==", + "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" ], @@ -829,13 +1662,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" + "@img/sharp-libvips-linux-arm": "1.2.4" } }, "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==", + "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" ], @@ -851,7 +1684,7 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" + "@img/sharp-libvips-linux-arm64": "1.2.4" } }, "node_modules/@img/sharp-linux-ppc64": { @@ -899,9 +1732,9 @@ } }, "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==", + "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" ], @@ -917,13 +1750,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.0.4" + "@img/sharp-libvips-linux-s390x": "1.2.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==", + "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" ], @@ -939,13 +1772,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" + "@img/sharp-libvips-linux-x64": "1.2.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==", + "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" ], @@ -961,13 +1794,13 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + "@img/sharp-libvips-linuxmusl-arm64": "1.2.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==", + "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" ], @@ -983,20 +1816,20 @@ "url": "https://opencollective.com/libvips" }, "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + "@img/sharp-libvips-linuxmusl-x64": "1.2.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==", + "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.2.0" + "@emnapi/runtime": "^1.7.0" }, "engines": { "node": "^18.17.0 || ^20.3.0 || >=21.0.0" @@ -1025,9 +1858,9 @@ } }, "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==", + "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" ], @@ -1044,9 +1877,9 @@ } }, "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==", + "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" ], @@ -1062,6 +1895,159 @@ "url": "https://opencollective.com/libvips" } }, + "node_modules/@inquirer/ansi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", + "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", + "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^10.3.2", + "@inquirer/type": "^3.0.10" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core": { + "version": "10.3.2", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", + "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", + "license": "MIT", + "dependencies": { + "@inquirer/ansi": "^1.0.2", + "@inquirer/figures": "^1.0.15", + "@inquirer/type": "^3.0.10", + "cli-width": "^4.1.0", + "mute-stream": "^2.0.0", + "signal-exit": "^4.1.0", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, + "node_modules/@inquirer/core/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/@inquirer/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@inquirer/core/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/@inquirer/core/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/@inquirer/core/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/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", + "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", + "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", @@ -1072,6 +2058,16 @@ "@jridgewell/trace-mapping": "^0.3.24" } }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@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", @@ -1097,6 +2093,124 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@modelcontextprotocol/sdk": { + "version": "1.27.1", + "resolved": "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.27.1.tgz", + "integrity": "sha512-sr6GbP+4edBwFndLbM60gf07z0FQ79gaExpnsjMGePXqFcSSb7t6iscpjk9DhFhwd+mTEQrzNafGP8/iGGFYaA==", + "license": "MIT", + "dependencies": { + "@hono/node-server": "^1.19.9", + "ajv": "^8.17.1", + "ajv-formats": "^3.0.1", + "content-type": "^1.0.5", + "cors": "^2.8.5", + "cross-spawn": "^7.0.5", + "eventsource": "^3.0.2", + "eventsource-parser": "^3.0.0", + "express": "^5.2.1", + "express-rate-limit": "^8.2.1", + "hono": "^4.11.4", + "jose": "^6.1.3", + "json-schema-typed": "^8.0.2", + "pkce-challenge": "^5.0.0", + "raw-body": "^3.0.0", + "zod": "^3.25 || ^4.0", + "zod-to-json-schema": "^3.25.1" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@cfworker/json-schema": "^4.1.1", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "@cfworker/json-schema": { + "optional": true + }, + "zod": { + "optional": false + } + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@modelcontextprotocol/sdk/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@mswjs/interceptors": { + "version": "0.41.3", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.41.3.tgz", + "integrity": "sha512-cXu86tF4VQVfwz8W1SPbhoRyHJkti6mjH/XJIxp40jhO4j2k1m4KYrEykxqWPkFF3vrK4rgQppBh//AwyGSXPA==", + "license": "MIT", + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1132,12 +2246,1538 @@ "node": ">= 8" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "license": "MIT" + }, "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/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", + "license": "MIT" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-accessible-icon": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accessible-icon/-/react-accessible-icon-1.1.7.tgz", + "integrity": "sha512-XM+E4WXl0OqUJFovy6GjmxxFyx9opfCAIUku4dlKRd5YEPqt4kALOkQOp0Of6reHuUkJuiPBEc5k0o4z4lTC8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-aspect-ratio": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-avatar": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context-menu": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-form": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-form/-/react-form-0.1.8.tgz", + "integrity": "sha512-QM70k4Zwjttifr5a4sZFts9fn8FzHYvQ5PiB19O2HsYibaHSVt9fH9rzB0XZo/YcM+b7t/p7lYCT/F5eOeF5yQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-label": "2.1.7", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-hover-card": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menu": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-menubar": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-one-time-password-field": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-one-time-password-field/-/react-one-time-password-field-0.1.8.tgz", + "integrity": "sha512-ycS4rbwURavDPVjCb5iS3aG4lURFDILi6sKI/WITUMZ13gMmn/xGjpLoqBAalhJaDk8I3UbCM5GzKHrnzwHbvg==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-password-toggle-field": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-password-toggle-field/-/react-password-toggle-field-0.1.3.tgz", + "integrity": "sha512-/UuCrDBWravcaMix4TdT+qlNdVwOM1Nck9kWx/vafXsdfj1ChfhOdfi3cy9SGBpWgTXwYCuboT/oYpJy3clqfw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-is-hydrated": "0.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-progress": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-radio-group": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", + "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-select": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-separator": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slider": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toast": { + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", + "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toggle-group": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-toolbar": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.1.11.tgz", + "integrity": "sha512-4ol06/1bLoFu1nwUqzdD4Y5RZ9oDdKeiHIsntug54Hcr1pgaHiPqHFEaXI1IFP/EsOfROQZ8Mig9VTIRza6Tjg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-toggle-group": "1.1.11" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.1.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", + "license": "MIT" + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", @@ -1491,6 +4131,12 @@ "win32" ] }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, "node_modules/@shikijs/core": { "version": "3.23.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.23.0.tgz", @@ -1558,6 +4204,363 @@ "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", "license": "MIT" }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.2.tgz", + "integrity": "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==", + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.5", + "enhanced-resolve": "^5.19.0", + "jiti": "^2.6.1", + "lightningcss": "1.32.0", + "magic-string": "^0.30.21", + "source-map-js": "^1.2.1", + "tailwindcss": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.2.tgz", + "integrity": "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg==", + "license": "MIT", + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-arm64": "4.2.2", + "@tailwindcss/oxide-darwin-x64": "4.2.2", + "@tailwindcss/oxide-freebsd-x64": "4.2.2", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", + "@tailwindcss/oxide-linux-x64-musl": "4.2.2", + "@tailwindcss/oxide-wasm32-wasi": "4.2.2", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.2.tgz", + "integrity": "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.2.tgz", + "integrity": "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.2.tgz", + "integrity": "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.2.tgz", + "integrity": "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.2.tgz", + "integrity": "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.2.tgz", + "integrity": "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.2.tgz", + "integrity": "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.2.tgz", + "integrity": "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.2.tgz", + "integrity": "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.2.tgz", + "integrity": "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.8.1", + "@emnapi/runtime": "^1.8.1", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.1.1", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.2.tgz", + "integrity": "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.2.tgz", + "integrity": "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 20" + } + }, + "node_modules/@tailwindcss/vite": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.2.2.tgz", + "integrity": "sha512-mEiF5HO1QqCLXoNEfXVA1Tzo+cYsrqV7w9Juj2wdUFyW07JRenqMG225MvPwr3ZD9N1bFQj46X7r33iHxLUW0w==", + "license": "MIT", + "dependencies": { + "@tailwindcss/node": "4.2.2", + "@tailwindcss/oxide": "4.2.2", + "tailwindcss": "4.2.2" + }, + "peerDependencies": { + "vite": "^5.2.0 || ^6 || ^7 || ^8" + } + }, + "node_modules/@ts-morph/common": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.27.0.tgz", + "integrity": "sha512-Wf29UqxWDpc+i61k3oIOzcUfQt79PIT9y/MWfAGlrkjg6lBC1hwDECLXPVJAhWjiGbfBCxZd65F/LIZF3+jeJQ==", + "license": "MIT", + "dependencies": { + "fast-glob": "^3.3.3", + "minimatch": "^10.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, "node_modules/@types/debug": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", @@ -1582,6 +4585,13 @@ "@types/unist": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -1606,18 +4616,376 @@ "@types/unist": "*" } }, + "node_modules/@types/react": { + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", + "license": "MIT", + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.6.tgz", + "integrity": "sha512-xMAgYwceFhRA2zY+XbEA7mxYbA093wdiW8Vu6gZPGWy9cmOyU9XesH1tNcEWsKFd5Vzrqx5T3D38PWx1FIIXkA==", + "license": "MIT" + }, "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/@types/validate-npm-package-name": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/validate-npm-package-name/-/validate-npm-package-name-4.0.2.tgz", + "integrity": "sha512-lrpDziQipxCEeK5kWxvljWYhUvOiB2A9izZd9B2AFarYAkqZshb4lPbRs7zKEic6eGtH8V/2qJW+dPp9OtF6bw==", + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz", + "integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/type-utils": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "ignore": "^7.0.5", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.57.2", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz", + "integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz", + "integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.57.2", + "@typescript-eslint/types": "^8.57.2", + "debug": "^4.4.3" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz", + "integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz", + "integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz", + "integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz", + "integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz", + "integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.57.2", + "@typescript-eslint/tsconfig-utils": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/visitor-keys": "8.57.2", + "debug": "^4.4.3", + "minimatch": "^10.2.2", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz", + "integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.57.2", + "@typescript-eslint/types": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz", + "integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.57.2", + "eslint-visitor-keys": "^5.0.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "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/@vitejs/plugin-react": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", + "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.27", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.17.0" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.16.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", @@ -1630,6 +4998,81 @@ "node": ">=0.4.0" } }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/ansi-align": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", @@ -1704,12 +5147,6 @@ "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", @@ -1735,18 +5172,24 @@ "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-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", @@ -1766,6 +5209,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/ast-types": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/astro": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/astro/-/astro-5.18.1.tgz", @@ -1852,446 +5307,16 @@ "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" - }, + "node_modules/astro/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": { - "autoprefixer": "bin/autoprefixer" + "semver": "bin/semver.js" }, "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=10" } }, "node_modules/axobject-query": { @@ -2313,6 +5338,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/base-64": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", @@ -2331,16 +5363,28 @@ "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==", + "node_modules/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/boolbase": { @@ -2371,6 +5415,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -2416,6 +5471,68 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "license": "MIT", + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", @@ -2428,15 +5545,6 @@ "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", @@ -2510,39 +5618,18 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "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" + "readdirp": "^5.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 20.19.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": { @@ -2560,6 +5647,18 @@ "node": ">=8" } }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", @@ -2572,6 +5671,129 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "license": "ISC", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/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/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/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/cliui/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/cliui/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/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -2581,18 +5803,11 @@ "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/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==", + "license": "MIT" }, "node_modules/color-convert": { "version": "2.0.1", @@ -2612,16 +5827,6 @@ "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", @@ -2647,6 +5852,41 @@ "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", "license": "ISC" }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "license": "MIT" + }, "node_modules/cookie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", @@ -2666,6 +5906,72 @@ "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==", "license": "MIT" }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", + "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/crossws": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz", @@ -2761,6 +6067,21 @@ "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "license": "CC0-1.0" }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/debug": { "version": "4.4.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", @@ -2791,12 +6112,91 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/dedent": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", + "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "license": "MIT", + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-browser": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", + "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "license": "MIT", + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", + "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2821,6 +6221,12 @@ "node": ">=8" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" + }, "node_modules/deterministic-object-hash": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", @@ -2852,12 +6258,6 @@ "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", @@ -2940,6 +6340,18 @@ "url": "https://github.com/fb55/domutils?sponsor=1" } }, + "node_modules/dotenv": { + "version": "17.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.3.1.tgz", + "integrity": "sha512-IO8C/dzEb6O3F9/twg6ZLXz164a2fhTnEWb95H23Dm4OuN+92NmEAlTrupP9VW6Jm3sO26tQlqyvyi4CsnY9GA==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, "node_modules/dset": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", @@ -2949,10 +6361,47 @@ "node": ">=4" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eciesjs": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz", + "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==", + "license": "MIT", + "dependencies": { + "@ecies/ciphers": "^0.2.5", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0" + }, + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, "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==", + "version": "1.5.322", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.322.tgz", + "integrity": "sha512-vFU34OcrvMcH66T+dYC3G4nURmgfDVewMIu6Q2urXpumAPSMmzvcn04KVVV8Opikq8Vs5nUbO/8laNhNRqSzYw==", "license": "ISC" }, "node_modules/emoji-regex": { @@ -2961,6 +6410,28 @@ "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "license": "MIT" }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.20.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.20.1.tgz", + "integrity": "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.3.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/entities": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", @@ -2973,12 +6444,60 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", + "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "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/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/esbuild": { "version": "0.27.4", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz", @@ -3029,18 +6548,245 @@ "node": ">=6" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, "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==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint": { + "version": "9.39.4", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz", + "integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.5", + "@eslint/js": "9.39.4", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.24.4", + "@babel/parser": "^7.24.4", + "hermes-parser": "^0.25.1", + "zod": "^3.25.0 || ^4.0.0", + "zod-validation-error": "^3.5.0 || ^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.5.2.tgz", + "integrity": "sha512-hmgTH57GfzoTFjVN0yBwTggnsVUF2tcqi7RJZHqi9lIezSs4eFyAMktA68YD4r5kNw1mxyY4dmkyoFDb3FIqrA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": "^9 || ^10" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/estree-walker": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", @@ -3050,18 +6796,160 @@ "@types/estree": "^1.0.0" } }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "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/eventsource": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-3.0.7.tgz", + "integrity": "sha512-CRT1WTyuQoD771GW56XEZFQ/ZoSfWid1alKGDYMmkt2yl8UXrVR4pspqWNEcqKvVIzg6PAltWjxcSSPrboA4iA==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/execa": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": "^18.19.0 || >=20.5.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz", + "integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==", + "license": "MIT", + "dependencies": { + "ip-address": "10.1.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": ">= 4.11" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "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-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, "node_modules/fast-glob": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", @@ -3090,6 +6978,36 @@ "node": ">= 6" } }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/fastq": { "version": "1.20.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", @@ -3116,6 +7034,57 @@ } } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -3128,6 +7097,65 @@ "node": ">=8" } }, + "node_modules/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "dev": true, + "license": "ISC" + }, "node_modules/flattie": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flattie/-/flattie-1.1.1.tgz", @@ -3158,17 +7186,48 @@ "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==", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", "engines": { - "node": "*" + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/rawify" + "engines": { + "node": ">=14.14" } }, "node_modules/fsevents": { @@ -3194,6 +7253,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuzzysort": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fuzzysort/-/fuzzysort-3.1.0.tgz", + "integrity": "sha512-sR9BNCjBg6LNgwvxlBd0sBABvQitkLzoVY9MYYROQVX/FvfJ4Mai9LsGhDgd8qYdds0bY77VzYd5iuB+v5rwQQ==", + "license": "MIT" + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "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", @@ -3206,6 +7289,80 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/get-own-enumerable-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-own-enumerable-keys/-/get-own-enumerable-keys-1.0.0.tgz", + "integrity": "sha512-PKsK2FSrQCyxcGHsGrLDcK0lx+0Ke+6e8KFFozA9/fIQLhQzPaRvJFdcz7+Axg3jUH/Mq+NI4xa5u/UT2tQskA==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "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", @@ -3216,6 +7373,7 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.3" @@ -3224,6 +7382,46 @@ "node": ">=10.13.0" } }, + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphql": { + "version": "16.13.2", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.13.2.tgz", + "integrity": "sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==", + "license": "MIT", + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, "node_modules/h3": { "version": "1.15.10", "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.10.tgz", @@ -3241,6 +7439,28 @@ "uncrypto": "^0.1.3" } }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/hasown": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", @@ -3430,6 +7650,38 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "license": "MIT" + }, + "node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "hermes-estree": "0.25.1" + } + }, + "node_modules/hono": { + "version": "4.12.9", + "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.9.tgz", + "integrity": "sha512-wy3T8Zm2bsEvxKZM5w21VdHDDcwVS1yUFFY6i8UobSsKfFceT7TOwhbhfKsDyx7tYQlmRM5FLpIuYvNFyjctiA==", + "license": "MIT", + "engines": { + "node": ">=16.9.0" + } + }, "node_modules/html-escaper": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-3.0.3.tgz", @@ -3452,6 +7704,89 @@ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "license": "BSD-2-Clause" }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/import-meta-resolve": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", @@ -3462,6 +7797,40 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", + "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", @@ -3472,38 +7841,11 @@ } }, "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==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", "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", @@ -3549,6 +7891,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-in-ssh": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-in-ssh/-/is-in-ssh-1.0.0.tgz", + "integrity": "sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-inside-container": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", @@ -3567,6 +7921,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "license": "MIT" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -3576,6 +7948,18 @@ "node": ">=0.12.0" } }, + "node_modules/is-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", + "integrity": "sha512-IlsXEHOjtKhpN8r/tRFj2nDyTmHvcfNeu/nrRIcXE17ROeatXchkojffa1SpdqW4cr/Fj6QkEf/Gn4zf6KKvEQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-plain-obj": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", @@ -3588,6 +7972,48 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "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", @@ -3603,15 +8029,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, "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==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "license": "MIT", "bin": { - "jiti": "bin/jiti.js" + "jiti": "lib/jiti-cli.mjs" } }, + "node_modules/jose": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/jose/-/jose-6.2.2.tgz", + "integrity": "sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, "node_modules/js-yaml": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", @@ -3624,6 +8071,85 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-typed": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/json-schema-typed/-/json-schema-typed-8.0.2.tgz", + "integrity": "sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==", + "license": "BSD-2-Clause" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", + "integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==", + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -3633,16 +8159,267 @@ "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==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, "engines": { - "node": ">=14" + "node": ">= 0.8.0" + } + }, + "node_modules/lightningcss": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", + "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" }, "funding": { - "url": "https://github.com/sponsors/antonk52" + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.32.0", + "lightningcss-darwin-arm64": "1.32.0", + "lightningcss-darwin-x64": "1.32.0", + "lightningcss-freebsd-x64": "1.32.0", + "lightningcss-linux-arm-gnueabihf": "1.32.0", + "lightningcss-linux-arm64-gnu": "1.32.0", + "lightningcss-linux-arm64-musl": "1.32.0", + "lightningcss-linux-x64-gnu": "1.32.0", + "lightningcss-linux-x64-musl": "1.32.0", + "lightningcss-win32-arm64-msvc": "1.32.0", + "lightningcss-win32-x64-msvc": "1.32.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", + "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", + "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", + "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", + "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", + "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "cpu": [ + "arm" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", + "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", + "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", + "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", + "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", + "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "cpu": [ + "arm64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.32.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", + "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "cpu": [ + "x64" + ], + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" } }, "node_modules/lines-and-columns": { @@ -3651,6 +8428,57 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", "license": "MIT" }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -3662,12 +8490,21 @@ } }, "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" + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/lucide-react": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-1.6.0.tgz", + "integrity": "sha512-YxLKVCOF5ZDI1AhKQE5IBYMY9y/Nr4NT15+7QEWpsTSVCdn4vmZhww+6BP76jWYjQx8rSz1Z+gGme1f+UycWEw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/magic-string": { @@ -3700,6 +8537,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdast-util-definitions": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-6.0.0.tgz", @@ -3731,6 +8577,18 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdast-util-find-and-replace/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/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", @@ -3931,6 +8789,33 @@ "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", "license": "CC0-1.0" }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -4528,6 +9413,74 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -4543,15 +9496,72 @@ "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==", + "node_modules/msw": { + "version": "2.12.14", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.12.14.tgz", + "integrity": "sha512-4KXa4nVBIBjbDbd7vfQNuQ25eFxug0aropCQFoI0JdOBuJWamkT1yLVIWReFI8SiTRc+H1hKzaNk+cLk2N9rtQ==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" + "@inquirer/confirm": "^5.0.0", + "@mswjs/interceptors": "^0.41.2", + "@open-draft/deferred-promise": "^2.2.0", + "@types/statuses": "^2.0.6", + "cookie": "^1.0.2", + "graphql": "^16.12.0", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", + "rettime": "^0.10.1", + "statuses": "^2.0.2", + "strict-event-emitter": "^0.5.1", + "tough-cookie": "^6.0.0", + "type-fest": "^5.2.0", + "until-async": "^3.0.2", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/msw/node_modules/type-fest": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mute-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", + "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", + "license": "ISC", + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/nanoid": { @@ -4572,6 +9582,22 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/neotraverse": { "version": "0.6.18", "resolved": "https://registry.npmjs.org/neotraverse/-/neotraverse-0.6.18.tgz", @@ -4594,6 +9620,44 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/node-fetch-native": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", @@ -4621,6 +9685,34 @@ "node": ">=0.10.0" } }, + "node_modules/npm-run-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", + "license": "MIT", + "dependencies": { + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -4642,13 +9734,25 @@ "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==", + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "license": "MIT", "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "license": "MIT", + "engines": { + "node": ">= 10" } }, "node_modules/ofetch": { @@ -4668,6 +9772,42 @@ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", "license": "MIT" }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/oniguruma-parser": { "version": "0.12.1", "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", @@ -4685,6 +9825,73 @@ "regex-recursion": "^6.0.2" } }, + "node_modules/open": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/open/-/open-11.0.0.tgz", + "integrity": "sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.4.0", + "define-lazy-prop": "^3.0.0", + "is-in-ssh": "^1.0.0", + "is-inside-container": "^1.0.0", + "powershell-utils": "^0.1.0", + "wsl-utils": "^0.3.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "license": "MIT" + }, "node_modules/p-limit": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", @@ -4700,6 +9907,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "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", @@ -4734,6 +9986,36 @@ "integrity": "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==", "license": "MIT" }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse-latin": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", @@ -4752,6 +10034,18 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/parse5": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", @@ -4764,10 +10058,44 @@ "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==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "license": "MIT" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", "license": "MIT" }, "node_modules/piccolore": { @@ -4794,22 +10122,13 @@ "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==", + "node_modules/pkce-challenge": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.1.tgz", + "integrity": "sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==", "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": ">=16.20.0" } }, "node_modules/postcss": { @@ -4840,112 +10159,10 @@ "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==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", + "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", "dependencies": { "cssesc": "^3.0.0", @@ -4955,11 +10172,152 @@ "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/powershell-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/powershell-utils/-/powershell-utils-0.1.0.tgz", + "integrity": "sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.1.tgz", + "integrity": "sha512-UOnG6LftzbdaHZcKoPFtOcCKztrQ57WkHDeRD9t/PTQtmT0NHSeWWepj6pS0z/N7+08BHFDQVUrfmfMRcZwbMg==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-astro": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-astro/-/prettier-plugin-astro-0.14.1.tgz", + "integrity": "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@astrojs/compiler": "^2.9.1", + "prettier": "^3.0.0", + "sass-formatter": "^0.7.6" + }, + "engines": { + "node": "^14.15.0 || >=16.0.0" + } + }, + "node_modules/prettier-plugin-tailwindcss": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.7.2.tgz", + "integrity": "sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.19" + }, + "peerDependencies": { + "@ianvs/prettier-plugin-sort-imports": "*", + "@prettier/plugin-hermes": "*", + "@prettier/plugin-oxc": "*", + "@prettier/plugin-pug": "*", + "@shopify/prettier-plugin-liquid": "*", + "@trivago/prettier-plugin-sort-imports": "*", + "@zackad/prettier-plugin-twig": "*", + "prettier": "^3.0", + "prettier-plugin-astro": "*", + "prettier-plugin-css-order": "*", + "prettier-plugin-jsdoc": "*", + "prettier-plugin-marko": "*", + "prettier-plugin-multiline-arrays": "*", + "prettier-plugin-organize-attributes": "*", + "prettier-plugin-organize-imports": "*", + "prettier-plugin-sort-imports": "*", + "prettier-plugin-svelte": "*" + }, + "peerDependenciesMeta": { + "@ianvs/prettier-plugin-sort-imports": { + "optional": true + }, + "@prettier/plugin-hermes": { + "optional": true + }, + "@prettier/plugin-oxc": { + "optional": true + }, + "@prettier/plugin-pug": { + "optional": true + }, + "@shopify/prettier-plugin-liquid": { + "optional": true + }, + "@trivago/prettier-plugin-sort-imports": { + "optional": true + }, + "@zackad/prettier-plugin-twig": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + }, + "prettier-plugin-css-order": { + "optional": true + }, + "prettier-plugin-jsdoc": { + "optional": true + }, + "prettier-plugin-marko": { + "optional": true + }, + "prettier-plugin-multiline-arrays": { + "optional": true + }, + "prettier-plugin-organize-attributes": { + "optional": true + }, + "prettier-plugin-organize-imports": { + "optional": true + }, + "prettier-plugin-sort-imports": { + "optional": true + }, + "prettier-plugin-svelte": { + "optional": true + } + } + }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/prismjs": { "version": "1.30.0", @@ -4993,6 +10351,44 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -5013,43 +10409,239 @@ ], "license": "MIT" }, + "node_modules/radix-ui": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/radix-ui/-/radix-ui-1.4.3.tgz", + "integrity": "sha512-aWizCQiyeAenIdUbqEpXgRA1ya65P13NKn/W8rWkcN0OPkRDxdBVLWnIEDsS2RpwCK2nobI7oMUSmexzTDyAmA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-accessible-icon": "1.1.7", + "@radix-ui/react-accordion": "1.2.12", + "@radix-ui/react-alert-dialog": "1.1.15", + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-aspect-ratio": "1.1.7", + "@radix-ui/react-avatar": "1.1.10", + "@radix-ui/react-checkbox": "1.3.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-context-menu": "2.2.16", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-dropdown-menu": "2.1.16", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-form": "0.1.8", + "@radix-ui/react-hover-card": "1.1.15", + "@radix-ui/react-label": "2.1.7", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-menubar": "1.1.16", + "@radix-ui/react-navigation-menu": "1.2.14", + "@radix-ui/react-one-time-password-field": "0.1.8", + "@radix-ui/react-password-toggle-field": "0.1.3", + "@radix-ui/react-popover": "1.1.15", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-progress": "1.1.7", + "@radix-ui/react-radio-group": "1.3.8", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-scroll-area": "1.2.10", + "@radix-ui/react-select": "2.2.6", + "@radix-ui/react-separator": "1.1.7", + "@radix-ui/react-slider": "1.3.6", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-switch": "1.2.6", + "@radix-ui/react-tabs": "1.1.13", + "@radix-ui/react-toast": "1.2.15", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-toggle-group": "1.1.11", + "@radix-ui/react-toolbar": "1.1.11", + "@radix-ui/react-tooltip": "1.2.8", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-escape-keydown": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, "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==", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", "license": "MIT", "dependencies": { - "pify": "^2.3.0" + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/react": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz", + "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.4" + } + }, + "node_modules/react-refresh": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, "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==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 20.19.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/recast": { + "version": "0.23.11", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", + "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", + "license": "MIT", + "dependencies": { + "ast-types": "^0.16.1", + "esprima": "~4.0.0", + "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", + "tslib": "^2.0.1" + }, + "engines": { + "node": ">= 4" } }, "node_modules/regex": { @@ -5218,24 +10810,47 @@ "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==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "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" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/retext": { @@ -5299,6 +10914,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rettime": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/rettime/-/rettime-0.10.1.tgz", + "integrity": "sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==", + "license": "MIT" + }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", @@ -5353,6 +10974,44 @@ "fsevents": "~2.3.2" } }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/router/node_modules/path-to-regexp": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/run-applescript": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", + "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -5376,6 +11035,29 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/s.color": { + "version": "0.0.15", + "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", + "integrity": "sha512-AUNrbEUHeKY8XsYr/DYpl+qk5+aM+DChopnWOPEzn8YKzOhv4l2zH6LzZms3tOZP3wwdOyc0RmTciyi46HLIuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sass-formatter": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/sass-formatter/-/sass-formatter-0.7.9.tgz", + "integrity": "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "suf-log": "^2.5.3" + } + }, "node_modules/sax": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", @@ -5385,28 +11067,146 @@ "node": ">=11.0.0" } }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "license": "ISC", "bin": { "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shadcn": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/shadcn/-/shadcn-4.1.0.tgz", + "integrity": "sha512-3zETJ+0Ezj69FS6RL0HOkLKKAR5yXisXx1iISJdfLQfrUqj/VIQlanQi1Ukk+9OE+XHZVj4FQNTBSfbr2CyCYg==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/plugin-transform-typescript": "^7.28.0", + "@babel/preset-typescript": "^7.27.1", + "@dotenvx/dotenvx": "^1.48.4", + "@modelcontextprotocol/sdk": "^1.26.0", + "@types/validate-npm-package-name": "^4.0.2", + "browserslist": "^4.26.2", + "commander": "^14.0.0", + "cosmiconfig": "^9.0.0", + "dedent": "^1.6.0", + "deepmerge": "^4.3.1", + "diff": "^8.0.2", + "execa": "^9.6.0", + "fast-glob": "^3.3.3", + "fs-extra": "^11.3.1", + "fuzzysort": "^3.1.0", + "https-proxy-agent": "^7.0.6", + "kleur": "^4.1.5", + "msw": "^2.10.4", + "node-fetch": "^3.3.2", + "open": "^11.0.0", + "ora": "^8.2.0", + "postcss": "^8.5.6", + "postcss-selector-parser": "^7.1.0", + "prompts": "^2.4.2", + "recast": "^0.23.11", + "stringify-object": "^5.0.0", + "tailwind-merge": "^3.0.1", + "ts-morph": "^26.0.0", + "tsconfig-paths": "^4.2.0", + "validate-npm-package-name": "^7.0.1", + "zod": "^3.24.1", + "zod-to-json-schema": "^3.24.6" + }, + "bin": { + "shadcn": "dist/index.js" + } + }, + "node_modules/shadcn/node_modules/commander": { + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "license": "MIT", + "engines": { + "node": ">=20" + } + }, + "node_modules/shadcn/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" } }, "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==", + "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": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.6.3" + "@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" @@ -5415,25 +11215,64 @@ "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" + "@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/sharp/node_modules/semver": { + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" } }, "node_modules/shiki": { @@ -5452,13 +11291,88 @@ "@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==", + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "license": "MIT", "dependencies": { - "is-arrayish": "^0.3.1" + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/sisteransi": { @@ -5479,6 +11393,15 @@ "url": "https://github.com/sponsors/cyyynthia" } }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -5498,6 +11421,33 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "license": "MIT" + }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -5529,6 +11479,23 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/stringify-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-5.0.0.tgz", + "integrity": "sha512-zaJYxz2FtcMb4f+g60KsRNFOpVMUyuJgA51Zi5Z1DOTC3S59+OQiVOzE9GZt0x72uBGWKsQIuBKeF9iusmKFsg==", + "license": "BSD-2-Clause", + "dependencies": { + "get-own-enumerable-keys": "^1.0.0", + "is-obj": "^3.0.0", + "is-regexp": "^3.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/yeoman/stringify-object?sponsor=1" + } + }, "node_modules/strip-ansi": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", @@ -5544,47 +11511,61 @@ "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==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "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": ">=4" } }, - "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==", + "node_modules/strip-final-newline": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "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" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/suf-log": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/suf-log/-/suf-log-2.5.3.tgz", + "integrity": "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow==", + "dev": true, + "license": "MIT", + "dependencies": { + "s.color": "0.0.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/svgo": { @@ -5612,62 +11593,45 @@ "url": "https://opencollective.com/svgo" } }, + "node_modules/tagged-tag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tagged-tag/-/tagged-tag-1.0.0.tgz", + "integrity": "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tailwind-merge": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.5.0.tgz", + "integrity": "sha512-I8K9wewnVDkL1NTGoqWmVEIlUcB9gFriAEkXkfCjX5ib8ezGxtR3xD7iZIxrfArjEsH7F1CHD4RFUtxefdqV/A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "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" - } + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", + "license": "MIT" }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "node_modules/tapable": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.2.tgz", + "integrity": "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==", "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": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/tiny-inflate": { @@ -5676,6 +11640,12 @@ "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==", "license": "MIT" }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" + }, "node_modules/tinyexec": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", @@ -5701,6 +11671,24 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, + "node_modules/tldts": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-7.0.27.tgz", + "integrity": "sha512-I4FZcVFcqCRuT0ph6dCDpPuO4Xgzvh+spkcTr1gK7peIvxWauoloVO0vuy1FQnijT63ss6AsHB6+OIM4aXHbPg==", + "license": "MIT", + "dependencies": { + "tldts-core": "^7.0.27" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-7.0.27.tgz", + "integrity": "sha512-YQ7uPjgWUibIK6DW5lrKujGwUKhLevU4hcGbP5O6TcIUb+oTjJYJVWPS4nZsIHrEEEG6myk/oqAJUEQmpZrHsg==", + "license": "MIT" + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -5713,6 +11701,27 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-6.0.1.tgz", + "integrity": "sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==", + "license": "BSD-3-Clause", + "dependencies": { + "tldts": "^7.0.5" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -5733,11 +11742,28 @@ "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/ts-api-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", + "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-morph": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-26.0.0.tgz", + "integrity": "sha512-ztMO++owQnz8c/gIENcM9XfCEzgoGphTv+nKpYNM1bgsdOVC/jRZuEBf6N+mLLDNg68Kl+GgUZfOySaRiG1/Ug==", + "license": "MIT", + "dependencies": { + "@ts-morph/common": "~0.27.0", + "code-block-writer": "^13.0.3" + } }, "node_modules/tsconfck": { "version": "3.1.6", @@ -5759,12 +11785,47 @@ } } }, + "node_modules/tsconfig-paths": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz", + "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==", + "license": "MIT", + "dependencies": { + "json5": "^2.2.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, "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 + "license": "0BSD" + }, + "node_modules/tw-animate-css": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/tw-animate-css/-/tw-animate-css-1.4.0.tgz", + "integrity": "sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Wombosvideo" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } }, "node_modules/type-fest": { "version": "4.41.0", @@ -5778,12 +11839,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "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" @@ -5792,6 +11866,30 @@ "node": ">=14.17" } }, + "node_modules/typescript-eslint": { + "version": "8.57.2", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz", + "integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.57.2", + "@typescript-eslint/parser": "8.57.2", + "@typescript-eslint/typescript-estree": "8.57.2", + "@typescript-eslint/utils": "8.57.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" + } + }, "node_modules/ufo": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", @@ -5810,6 +11908,18 @@ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unified": { "version": "11.0.5", "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", @@ -5963,6 +12073,24 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/unstorage": { "version": "1.17.4", "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz", @@ -6059,32 +12187,22 @@ } } }, - "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" - }, + "node_modules/unstorage/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.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": "20 || >=22" } }, - "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==", + "node_modules/until-async": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/until-async/-/until-async-3.0.2.tgz", + "integrity": "sha512-IiSk4HlzAMqTUseHHe3VhIGyuFmN90zMTpD3Z3y8jeQbzLIq500MVM7Jq2vUAnTKAFPJrqwkzr6PoTcPhGcOiw==", "license": "MIT", - "engines": { - "node": ">= 20.19.0" - }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/kettanaito" } }, "node_modules/update-browserslist-db": { @@ -6117,12 +12235,92 @@ "browserslist": ">= 4.21.0" } }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.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/validate-npm-package-name": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-7.0.2.tgz", + "integrity": "sha512-hVDIBwsRruT73PbK7uP5ebUt+ezEtCmzZz3F59BSr2F6OVFnJ/6h8liuvdLrQ88Xmnk6/+xGGuq+pG9WwTuy3A==", + "license": "ISC", + "engines": { + "node": "^20.17.0 || >=22.9.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vfile": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", @@ -6725,6 +12923,30 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/which-pm-runs": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.1.0.tgz", @@ -6749,6 +12971,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wrap-ansi": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", @@ -6766,25 +12998,65 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/wsl-utils": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.3.1.tgz", + "integrity": "sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0", + "powershell-utils": "^0.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "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==", + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "license": "ISC", - "bin": { - "yaml": "bin.mjs" + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" + "node": ">=12" } }, "node_modules/yargs-parser": { @@ -6796,6 +13068,47 @@ "node": ">=12" } }, + "node_modules/yargs/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/yargs/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/yargs/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/yargs/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/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", @@ -6835,6 +13148,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", + "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "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", @@ -6862,6 +13187,19 @@ "zod": "^3" } }, + "node_modules/zod-validation-error": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + } + }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/website/package.json b/website/package.json index 3f1bed4..f71facc 100644 --- a/website/package.json +++ b/website/package.json @@ -1,17 +1,45 @@ { - "name": "feynman-website", + "name": "website", "type": "module", "version": "0.0.1", "private": true, "scripts": { "dev": "astro dev", - "build": "node ../scripts/sync-website-installers.mjs && astro build", - "preview": "astro preview" + "build": "astro build", + "preview": "astro preview", + "astro": "astro", + "lint": "eslint .", + "format": "prettier --write \"**/*.{ts,tsx,astro}\"", + "typecheck": "astro check" }, "dependencies": { - "astro": "^5.7.0", - "@astrojs/tailwind": "^6.0.2", - "tailwindcss": "^3.4.0", - "sharp": "^0.33.0" + "@astrojs/react": "^4.4.2", + "@fontsource-variable/ibm-plex-sans": "^5.2.8", + "@tailwindcss/vite": "^4.2.1", + "@types/react": "^19.2.14", + "@types/react-dom": "^19.2.3", + "astro": "^5.18.1", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "lucide-react": "^1.6.0", + "radix-ui": "^1.4.3", + "react": "^19.2.4", + "react-dom": "^19.2.4", + "shadcn": "^4.1.0", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.2.1", + "tw-animate-css": "^1.4.0" + }, + "devDependencies": { + "@eslint/js": "^9.39.4", + "eslint": "^9.39.4", + "eslint-plugin-react-hooks": "^7.0.1", + "eslint-plugin-react-refresh": "^0.5.2", + "globals": "^16.5.0", + "prettier": "^3.8.1", + "prettier-plugin-astro": "^0.14.1", + "prettier-plugin-tailwindcss": "^0.7.2", + "typescript": "~5.9.3", + "typescript-eslint": "^8.57.1" } } diff --git a/website/public/favicon.svg b/website/public/favicon.svg new file mode 100644 index 0000000..6f7f1ea --- /dev/null +++ b/website/public/favicon.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/public/hero-raw.png b/website/public/hero.png similarity index 100% rename from website/public/hero-raw.png rename to website/public/hero.png diff --git a/website/public/install b/website/public/install deleted file mode 100644 index 866d486..0000000 --- a/website/public/install +++ /dev/null @@ -1,261 +0,0 @@ -#!/bin/sh - -set -eu - -VERSION="${1:-latest}" -INSTALL_BIN_DIR="${FEYNMAN_INSTALL_BIN_DIR:-$HOME/.local/bin}" -INSTALL_APP_DIR="${FEYNMAN_INSTALL_APP_DIR:-$HOME/.local/share/feynman}" -SKIP_PATH_UPDATE="${FEYNMAN_INSTALL_SKIP_PATH_UPDATE:-0}" -path_action="already" -path_profile="" - -step() { - printf '==> %s\n' "$1" -} - -run_with_spinner() { - label="$1" - shift - - if [ ! -t 2 ]; then - step "$label" - "$@" - return - fi - - "$@" & - pid=$! - frame=0 - - set +e - while kill -0 "$pid" 2>/dev/null; do - case "$frame" in - 0) spinner='|' ;; - 1) spinner='/' ;; - 2) spinner='-' ;; - *) spinner='\\' ;; - esac - printf '\r==> %s %s' "$label" "$spinner" >&2 - frame=$(( (frame + 1) % 4 )) - sleep 0.1 - done - wait "$pid" - status=$? - set -e - - printf '\r\033[2K' >&2 - if [ "$status" -ne 0 ]; then - printf '==> %s failed\n' "$label" >&2 - return "$status" - fi - - step "$label" -} - -normalize_version() { - case "$1" in - "" | latest) - printf 'latest\n' - ;; - v*) - printf '%s\n' "${1#v}" - ;; - *) - printf '%s\n' "$1" - ;; - esac -} - -download_file() { - url="$1" - output="$2" - - if command -v curl >/dev/null 2>&1; then - if [ -t 2 ]; then - curl -fL --progress-bar "$url" -o "$output" - else - curl -fsSL "$url" -o "$output" - fi - return - fi - - if command -v wget >/dev/null 2>&1; then - if [ -t 2 ]; then - wget --show-progress -O "$output" "$url" - else - wget -q -O "$output" "$url" - fi - return - fi - - echo "curl or wget is required to install Feynman." >&2 - exit 1 -} - -download_text() { - url="$1" - - if command -v curl >/dev/null 2>&1; then - curl -fsSL "$url" - return - fi - - if command -v wget >/dev/null 2>&1; then - wget -q -O - "$url" - return - fi - - echo "curl or wget is required to install Feynman." >&2 - exit 1 -} - -add_to_path() { - path_action="already" - path_profile="" - - case ":$PATH:" in - *":$INSTALL_BIN_DIR:"*) - return - ;; - esac - - if [ "$SKIP_PATH_UPDATE" = "1" ]; then - path_action="skipped" - return - fi - - profile="${FEYNMAN_INSTALL_SHELL_PROFILE:-$HOME/.profile}" - if [ -z "${FEYNMAN_INSTALL_SHELL_PROFILE:-}" ]; then - case "${SHELL:-}" in - */zsh) - profile="$HOME/.zshrc" - ;; - */bash) - profile="$HOME/.bashrc" - ;; - esac - fi - - path_profile="$profile" - path_line="export PATH=\"$INSTALL_BIN_DIR:\$PATH\"" - if [ -f "$profile" ] && grep -F "$path_line" "$profile" >/dev/null 2>&1; then - path_action="configured" - return - fi - - { - printf '\n# Added by Feynman installer\n' - printf '%s\n' "$path_line" - } >>"$profile" - path_action="added" -} - -require_command() { - if ! command -v "$1" >/dev/null 2>&1; then - echo "$1 is required to install Feynman." >&2 - exit 1 - fi -} - -resolve_version() { - normalized_version="$(normalize_version "$VERSION")" - - if [ "$normalized_version" != "latest" ]; then - printf '%s\n' "$normalized_version" - return - fi - - release_json="$(download_text "https://api.github.com/repos/getcompanion-ai/feynman/releases/latest")" - resolved="$(printf '%s\n' "$release_json" | sed -n 's/.*"tag_name":[[:space:]]*"v\([^"]*\)".*/\1/p' | head -n 1)" - - if [ -z "$resolved" ]; then - echo "Failed to resolve the latest Feynman release version." >&2 - exit 1 - fi - - printf '%s\n' "$resolved" -} - -case "$(uname -s)" in - Darwin) - os="darwin" - ;; - Linux) - os="linux" - ;; - *) - echo "install.sh supports macOS and Linux. Use install.ps1 on Windows." >&2 - exit 1 - ;; -esac - -case "$(uname -m)" in - x86_64 | amd64) - arch="x64" - ;; - arm64 | aarch64) - arch="arm64" - ;; - *) - echo "Unsupported architecture: $(uname -m)" >&2 - exit 1 - ;; -esac - -require_command mktemp -require_command tar - -resolved_version="$(resolve_version)" -asset_target="$os-$arch" -bundle_name="feynman-${resolved_version}-${asset_target}" -archive_name="${bundle_name}.tar.gz" -base_url="${FEYNMAN_INSTALL_BASE_URL:-https://github.com/getcompanion-ai/feynman/releases/download/v${resolved_version}}" -download_url="${base_url}/${archive_name}" - -step "Installing Feynman ${resolved_version} for ${asset_target}" - -tmp_dir="$(mktemp -d)" -cleanup() { - rm -rf "$tmp_dir" -} -trap cleanup EXIT INT TERM - -archive_path="$tmp_dir/$archive_name" -step "Downloading ${archive_name}" -download_file "$download_url" "$archive_path" - -mkdir -p "$INSTALL_APP_DIR" -rm -rf "$INSTALL_APP_DIR/$bundle_name" -run_with_spinner "Extracting ${archive_name}" tar -xzf "$archive_path" -C "$INSTALL_APP_DIR" - -mkdir -p "$INSTALL_BIN_DIR" -step "Linking feynman into $INSTALL_BIN_DIR" -cat >"$INSTALL_BIN_DIR/feynman" < Downloading $archiveName" - Invoke-WebRequest -Uri $downloadUrl -OutFile $archivePath - - New-Item -ItemType Directory -Path $installRoot -Force | Out-Null - if (Test-Path $bundleDir) { - Remove-Item -Recurse -Force $bundleDir - } - - Write-Host "==> Extracting $archiveName" - Expand-Archive -LiteralPath $archivePath -DestinationPath $installRoot -Force - - New-Item -ItemType Directory -Path $installBinDir -Force | Out-Null - - $shimPath = Join-Path $installBinDir "feynman.cmd" - Write-Host "==> Linking feynman into $installBinDir" - @" -@echo off -"$bundleDir\feynman.cmd" %* -"@ | Set-Content -Path $shimPath -Encoding ASCII - - $currentUserPath = [Environment]::GetEnvironmentVariable("Path", "User") - if (-not $currentUserPath.Split(';').Contains($installBinDir)) { - $updatedPath = if ([string]::IsNullOrWhiteSpace($currentUserPath)) { - $installBinDir - } else { - "$currentUserPath;$installBinDir" - } - [Environment]::SetEnvironmentVariable("Path", $updatedPath, "User") - Write-Host "Updated user PATH. Open a new shell to run feynman." - } else { - Write-Host "$installBinDir is already on PATH." - } - - Write-Host "Feynman $resolvedVersion installed successfully." -} finally { - if (Test-Path $tmpDir) { - Remove-Item -Recurse -Force $tmpDir - } -} diff --git a/website/src/components/AsciiLogo.astro b/website/src/components/AsciiLogo.astro deleted file mode 100644 index a2d57af..0000000 --- a/website/src/components/AsciiLogo.astro +++ /dev/null @@ -1,21 +0,0 @@ ---- -interface Props { - class?: string; - size?: 'nav' | 'hero'; -} - -const { class: className = '', size = 'hero' } = Astro.props; - -const sizeClasses = size === 'nav' - ? 'text-2xl' - : 'text-6xl sm:text-7xl md:text-8xl'; ---- - -feynman diff --git a/website/src/components/Footer.astro b/website/src/components/Footer.astro deleted file mode 100644 index 4067794..0000000 --- a/website/src/components/Footer.astro +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/website/src/components/Nav.astro b/website/src/components/Nav.astro deleted file mode 100644 index cdd99d2..0000000 --- a/website/src/components/Nav.astro +++ /dev/null @@ -1,29 +0,0 @@ ---- -import ThemeToggle from './ThemeToggle.astro'; -import AsciiLogo from './AsciiLogo.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 deleted file mode 100644 index 9e7754c..0000000 --- a/website/src/components/Sidebar.astro +++ /dev/null @@ -1,80 +0,0 @@ ---- -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 deleted file mode 100644 index d9702a1..0000000 --- a/website/src/components/ThemeToggle.astro +++ /dev/null @@ -1,53 +0,0 @@ - - - diff --git a/website/src/components/ui/badge.tsx b/website/src/components/ui/badge.tsx new file mode 100644 index 0000000..cacff11 --- /dev/null +++ b/website/src/components/ui/badge.tsx @@ -0,0 +1,49 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" +import { Slot } from "radix-ui" + +import { cn } from "@/lib/utils" + +const badgeVariants = cva( + "group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground [a]:hover:bg-primary/80", + secondary: + "bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80", + destructive: + "bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20", + outline: + "border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground", + ghost: + "hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50", + link: "text-primary underline-offset-4 hover:underline", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant = "default", + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot.Root : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/website/src/components/ui/button.tsx b/website/src/components/ui/button.tsx new file mode 100644 index 0000000..a199844 --- /dev/null +++ b/website/src/components/ui/button.tsx @@ -0,0 +1,67 @@ +import * as React from "react" +import { cva, type VariantProps } from "class-variance-authority" +import { Slot } from "radix-ui" + +import { cn } from "@/lib/utils" + +const buttonVariants = cva( + "group/button inline-flex shrink-0 items-center justify-center rounded-md border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/80", + outline: + "border-border bg-background shadow-xs hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80 aria-expanded:bg-secondary aria-expanded:text-secondary-foreground", + ghost: + "hover:bg-muted hover:text-foreground aria-expanded:bg-muted aria-expanded:text-foreground dark:hover:bg-muted/50", + destructive: + "bg-destructive/10 text-destructive hover:bg-destructive/20 focus-visible:border-destructive/40 focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:hover:bg-destructive/30 dark:focus-visible:ring-destructive/40", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: + "h-9 gap-1.5 px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2", + xs: "h-6 gap-1 rounded-[min(var(--radius-md),8px)] px-2 text-xs in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3", + sm: "h-8 gap-1 rounded-[min(var(--radius-md),10px)] px-2.5 in-data-[slot=button-group]:rounded-md has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5", + lg: "h-10 gap-1.5 px-2.5 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3", + icon: "size-9", + "icon-xs": + "size-6 rounded-[min(var(--radius-md),8px)] in-data-[slot=button-group]:rounded-md [&_svg:not([class*='size-'])]:size-3", + "icon-sm": + "size-8 rounded-[min(var(--radius-md),10px)] in-data-[slot=button-group]:rounded-md", + "icon-lg": "size-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + } +) + +function Button({ + className, + variant = "default", + size = "default", + asChild = false, + ...props +}: React.ComponentProps<"button"> & + VariantProps & { + asChild?: boolean + }) { + const Comp = asChild ? Slot.Root : "button" + + return ( + + ) +} + +export { Button, buttonVariants } diff --git a/website/src/components/ui/card.tsx b/website/src/components/ui/card.tsx new file mode 100644 index 0000000..bdb5bde --- /dev/null +++ b/website/src/components/ui/card.tsx @@ -0,0 +1,103 @@ +import * as React from "react" + +import { cn } from "@/lib/utils" + +function Card({ + className, + size = "default", + ...props +}: React.ComponentProps<"div"> & { size?: "default" | "sm" }) { + return ( +
img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl", + className + )} + {...props} + /> + ) +} + +function CardHeader({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardTitle({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardDescription({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardAction({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardContent({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +function CardFooter({ className, ...props }: React.ComponentProps<"div">) { + return ( +
+ ) +} + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardAction, + CardDescription, + CardContent, +} diff --git a/website/src/components/ui/separator.tsx b/website/src/components/ui/separator.tsx new file mode 100644 index 0000000..ca11501 --- /dev/null +++ b/website/src/components/ui/separator.tsx @@ -0,0 +1,26 @@ +import * as React from "react" +import { Separator as SeparatorPrimitive } from "radix-ui" + +import { cn } from "@/lib/utils" + +function Separator({ + className, + orientation = "horizontal", + decorative = true, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +export { Separator } diff --git a/website/src/content/docs/agents/researcher.md b/website/src/content/docs/agents/researcher.md index 24b6738..d4b5aa8 100644 --- a/website/src/content/docs/agents/researcher.md +++ b/website/src/content/docs/agents/researcher.md @@ -1,75 +1,32 @@ --- title: Researcher -description: Gather primary evidence across papers, web sources, repos, docs, and local artifacts. +description: The researcher agent searches, reads, and extracts findings from papers and web sources. section: Agents order: 1 --- -## Source +The researcher is the primary information-gathering agent in Feynman. It searches academic databases and the web, reads papers and articles, extracts key findings, and organizes source material for other agents to synthesize. Most workflows start with the researcher. -Generated from `.feynman/agents/researcher.md`. Edit that prompt file, not this docs page. +## What it does -## Role +The researcher agent handles the entire source discovery and extraction pipeline. It formulates search queries based on your topic, evaluates results for relevance, reads full documents, and extracts structured information including claims, methodology, results, and limitations. -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. +When multiple researcher agents are spawned in parallel (which is the default for deep research and literature review), each agent tackles a different angle of the topic. One might search for foundational papers while another looks for recent work that challenges the established view. This parallel approach produces broader coverage than a single sequential search. ## 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. +The researcher uses a multi-source search strategy. For academic topics, it queries AlphaXiv for papers and uses citation chains to discover related work. For applied topics, it searches the web for documentation, blog posts, and code repositories. For most topics, it uses both channels and cross-references findings. -## 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 +Search queries are diversified automatically. Rather than running the same query multiple times, the researcher generates 2-4 varied queries that approach the topic from different angles. This catches papers that use different terminology for the same concept and surfaces sources that a single query would miss. -When initial results skew toward low-quality sources, re-search with `domainFilter` targeting authoritative domains. +## Source evaluation -## Output format +Not every search result is worth reading in full. The researcher evaluates results by scanning abstracts and summaries first, then selects the most relevant and authoritative sources for deep reading. It considers publication venue, citation count, recency, and topical relevance when prioritizing sources. -Assign each source a stable numeric ID. Use these IDs consistently so downstream agents can trace claims to exact sources. +## Extraction -### Evidence table +When reading a source in depth, the researcher extracts structured data: the main claims and their supporting evidence, methodology details, experimental results, stated limitations, and connections to other work. Each extracted item is tagged with its source location for traceability. -| # | Source | URL | Key claim | Type | Confidence | -|---|--------|-----|-----------|------|------------| -| 1 | ... | ... | ... | primary / secondary / self-reported | high / medium / low | +## Used by -### 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. +The researcher agent is used by the `/deepresearch`, `/lit`, `/review`, `/audit`, `/replicate`, `/compare`, and `/draft` workflows. It is the most frequently invoked agent in the system. You do not invoke it directly -- it is dispatched automatically by the workflow orchestrator. diff --git a/website/src/content/docs/agents/reviewer.md b/website/src/content/docs/agents/reviewer.md index 504c374..2dd9869 100644 --- a/website/src/content/docs/agents/reviewer.md +++ b/website/src/content/docs/agents/reviewer.md @@ -1,93 +1,33 @@ --- title: Reviewer -description: Simulate a tough but constructive AI research peer reviewer with inline annotations. +description: The reviewer agent evaluates documents with severity-graded academic feedback. section: Agents order: 2 --- -## Source +The reviewer agent evaluates documents, papers, and research artifacts with the rigor of an academic peer reviewer. It produces severity-graded feedback covering methodology, claims, writing quality, and reproducibility. -Generated from `.feynman/agents/reviewer.md`. Edit that prompt file, not this docs page. +## What it does -## Role +The reviewer reads a document end-to-end and evaluates it against standard academic criteria. It checks whether claims are supported by the presented evidence, whether the methodology is sound and described in sufficient detail, whether the experimental design controls for confounds, and whether the writing is clear and complete. -Simulate a tough but constructive AI research peer reviewer with inline annotations. +Each piece of feedback is assigned a severity level. **Critical** issues are fundamental problems that undermine the document's validity, such as a statistical test applied incorrectly or a conclusion not supported by the data. **Major** issues are significant problems that should be addressed, like missing baselines or inadequate ablation studies. **Minor** issues are suggestions for improvement, and **nits** are stylistic or formatting comments. -## Default Output +## Evaluation criteria -`review.md` +The reviewer evaluates documents across several dimensions: -Your job is to act like a skeptical but fair peer reviewer for AI/ML systems work. +- **Claims vs. Evidence** -- Does the evidence presented actually support the claims made? +- **Methodology** -- Is the approach sound? Are there confounds or biases? +- **Experimental Design** -- Are baselines appropriate? Are ablations sufficient? +- **Reproducibility** -- Could someone replicate this work from the description alone? +- **Writing Quality** -- Is the paper clear, well-organized, and free of ambiguity? +- **Completeness** -- Are limitations discussed? Is related work adequately covered? -## 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. +## Confidence scoring -## Output format +The reviewer provides a confidence score for each finding, indicating how certain it is about the assessment. High-confidence findings are clear-cut issues (a statistical error, a missing citation). Lower-confidence findings are judgment calls (whether a baseline is sufficient, whether more ablations are needed) where reasonable reviewers might disagree. -Produce two sections: a structured review and inline annotations. +## Used by -### 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. +The reviewer agent is the primary agent in the `/review` workflow. It also contributes to `/audit` (evaluating paper claims against code) and `/compare` (assessing the strength of evidence across sources). Like all agents, it is dispatched automatically by the workflow orchestrator. diff --git a/website/src/content/docs/agents/verifier.md b/website/src/content/docs/agents/verifier.md index 2ee4b96..fe3df6f 100644 --- a/website/src/content/docs/agents/verifier.md +++ b/website/src/content/docs/agents/verifier.md @@ -1,50 +1,36 @@ --- title: Verifier -description: Post-process a draft to add inline citations and verify every source URL. +description: The verifier agent cross-checks claims against their cited sources. section: Agents order: 4 --- -## Source +The verifier agent is responsible for fact-checking and validation. It cross-references claims against their cited sources, checks code implementations against paper descriptions, and flags unsupported or misattributed assertions. -Generated from `.feynman/agents/verifier.md`. Edit that prompt file, not this docs page. +## What it does -## Role +The verifier performs targeted checks on specific claims rather than reading documents end-to-end like the reviewer. It takes a claim and its cited source, retrieves the source, and determines whether the source actually supports the claim as stated. This catches misattributions (citing a paper that says something different), overstatements (claiming a stronger result than the source reports), and fabrications (claims with no basis in the cited source). -Post-process a draft to add inline citations and verify every source URL. +When checking code against papers, the verifier examines specific implementation details: hyperparameters, architecture configurations, training procedures, and evaluation metrics. It compares the paper's description to the code's actual behavior, noting discrepancies with exact file paths and line numbers. -## Tools +## Verification process -`read`, `bash`, `grep`, `find`, `ls`, `write`, `edit` +The verifier follows a systematic process for each claim it checks: -## Default Output +1. **Retrieve the source** -- Fetch the cited paper, article, or code file +2. **Locate the relevant section** -- Find where the source addresses the claim +3. **Compare** -- Check whether the source supports the claim as stated +4. **Classify** -- Mark the claim as verified, unsupported, overstated, or contradicted +5. **Document** -- Record the evidence with exact quotes and locations -`cited.md` +This process is deterministic and traceable. Every verification result includes the specific passage or code that was checked, making it easy to audit the verifier's work. -You receive a draft document and the research files it was built from. Your job is to: +## Confidence and limitations -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. +The verifier assigns a confidence level to each verification. Claims that directly quote a source are verified with high confidence. Claims that paraphrase or interpret results are verified with moderate confidence, since reasonable interpretations can differ. Claims about the implications or significance of results are verified with lower confidence, since these involve judgment. -## Citation rules +The verifier is honest about its limitations. When a claim cannot be verified because the source is behind a paywall, the code is not available, or the claim requires domain expertise beyond what the verifier can assess, it says so explicitly rather than guessing. -- 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. +## Used by -## 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. +The verifier agent is used by `/deepresearch` (final fact-checking pass), `/audit` (comparing paper claims to code), and `/replicate` (verifying that the replication plan captures all necessary details). It serves as the quality control step that runs after the researcher and writer have produced their output. diff --git a/website/src/content/docs/agents/writer.md b/website/src/content/docs/agents/writer.md index 0741b93..e006256 100644 --- a/website/src/content/docs/agents/writer.md +++ b/website/src/content/docs/agents/writer.md @@ -1,56 +1,36 @@ --- title: Writer -description: Turn research notes into clear, structured briefs and drafts. +description: The writer agent produces structured academic prose from research findings. section: Agents order: 3 --- -## Source +The writer agent transforms raw research findings into structured, well-organized documents. It specializes in academic prose, producing papers, briefs, surveys, and reports with proper citations, section structure, and narrative flow. -Generated from `.feynman/agents/writer.md`. Edit that prompt file, not this docs page. +## What it does -## Role +The writer takes source material -- findings from researcher agents, review feedback, comparison matrices -- and synthesizes it into a coherent document. It handles the difficult task of turning a collection of extracted claims and citations into prose that tells a clear story. -Turn research notes into clear, structured briefs and drafts. +The writer understands academic conventions. Claims are attributed to their sources with inline citations. Methodology sections describe procedures with sufficient detail for reproduction. Results are presented with appropriate qualifiers. Limitations are discussed honestly rather than buried or omitted. -## Tools +## Writing capabilities -`read`, `bash`, `grep`, `find`, `ls`, `write`, `edit` +The writer agent handles several document types: -## Default Output +- **Research Briefs** -- Concise summaries of a topic with key findings and citations, produced by the deep research workflow +- **Literature Reviews** -- Survey-style documents that map consensus, disagreement, and open questions across the field +- **Paper Drafts** -- Full academic papers with abstract, introduction, body sections, discussion, and references +- **Comparison Reports** -- Structured analyses of how multiple sources agree and differ +- **Summaries** -- Condensed versions of longer documents or multi-source findings -`draft.md` +## Citation handling -## 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. +The writer maintains citation integrity throughout the document. Every factual claim is linked back to its source. When multiple sources support the same claim, all are cited. When a claim comes from a single source, the writer notes this to help the reader assess confidence. The final reference list includes only works actually cited in the text. -## Output structure +## Iteration -```markdown -# Title +The writer supports iterative refinement. After producing an initial draft, you can ask Feynman to revise specific sections, add more detail on a subtopic, restructure the argument, or adjust the tone and level of technical detail. Each revision preserves the citation links and document structure. -## Executive Summary -2-3 paragraph overview of key findings. +## Used by -## 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. +The writer agent is used by `/deepresearch` (for the final brief), `/lit` (for the review document), `/draft` (as the primary agent), and `/compare` (for the comparison report). It is always the last agent to run in a workflow, producing the final output from the material gathered and evaluated by the researcher and reviewer agents. diff --git a/website/src/content/docs/getting-started/configuration.md b/website/src/content/docs/getting-started/configuration.md index 14959ea..eaf2861 100644 --- a/website/src/content/docs/getting-started/configuration.md +++ b/website/src/content/docs/getting-started/configuration.md @@ -1,66 +1,84 @@ --- title: Configuration -description: Configure models, search, and runtime options +description: Understand Feynman's configuration files and environment variables. section: Getting Started order: 4 --- -## Model +Feynman stores all configuration and state under `~/.feynman/`. This directory is created on first run and contains settings, authentication tokens, session history, and installed packages. -Set the default model: +## Directory structure -```bash -feynman model set +``` +~/.feynman/ +├── settings.json # Core configuration +├── web-search.json # Web search routing config +├── auth/ # OAuth tokens and API keys +├── sessions/ # Persisted conversation history +├── packages/ # Installed optional packages +└── bin/ # Binary (when installed via the native installer) ``` -Override at runtime: +The `settings.json` file is the primary configuration file. It is created by `feynman setup` and can be edited manually. A typical configuration looks like: -```bash -feynman --model anthropic:claude-opus-4-6 +```json +{ + "defaultModel": "anthropic:claude-sonnet-4-20250514", + "thinkingLevel": "medium" +} ``` -List available models: +## Model configuration + +The `defaultModel` field sets which model is used when you launch Feynman without the `--model` flag. The format is `provider:model-name`. You can change it via the CLI: + +```bash +feynman model set anthropic:claude-opus-4-20250514 +``` + +To see all models you have configured: ```bash feynman model list ``` -## Thinking level +## Thinking levels -Control the reasoning depth: +The `thinkingLevel` field controls how much reasoning the model does before responding. Available levels are `off`, `minimal`, `low`, `medium`, `high`, and `xhigh`. Higher levels produce more thorough analysis at the cost of latency and token usage. You can override per-session: ```bash feynman --thinking high ``` -Levels: `off`, `minimal`, `low`, `medium`, `high`, `xhigh`. +## Environment variables -## Web search +Feynman respects the following environment variables, which take precedence over `settings.json`: -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 -``` +| Variable | Description | +| --- | --- | +| `FEYNMAN_MODEL` | Override the default model | +| `FEYNMAN_HOME` | Override the config directory (default: `~/.feynman`) | +| `FEYNMAN_THINKING` | Override the thinking level | +| `ANTHROPIC_API_KEY` | Anthropic API key | +| `OPENAI_API_KEY` | OpenAI API key | +| `GOOGLE_API_KEY` | Google AI API key | +| `TAVILY_API_KEY` | Tavily web search API key | +| `SERPER_API_KEY` | Serper web search API key | ## Session storage -```bash -feynman --session-dir /path/to/sessions -``` - -## One-shot mode - -Run a single prompt and exit: +Each conversation is persisted as a JSON file in `~/.feynman/sessions/`. To start a fresh session: ```bash -feynman --prompt "summarize the key findings of 2401.12345" +feynman --new-session ``` + +To point sessions at a different directory (useful for per-project session isolation): + +```bash +feynman --session-dir ~/myproject/.feynman/sessions +``` + +## Diagnostics + +Run `feynman doctor` to verify your configuration is valid, check authentication status for all configured providers, and detect missing optional dependencies. The doctor command outputs a checklist showing what is working and what needs attention. diff --git a/website/src/content/docs/getting-started/installation.md b/website/src/content/docs/getting-started/installation.md index 236e9e8..35ea315 100644 --- a/website/src/content/docs/getting-started/installation.md +++ b/website/src/content/docs/getting-started/installation.md @@ -1,44 +1,69 @@ --- title: Installation -description: Install Feynman and get started +description: Install Feynman on macOS, Linux, or Windows using the one-line installer or npm. section: Getting Started order: 1 --- -## Requirements +Feynman ships as a standalone binary for macOS and Linux, and as an npm package for all platforms including Windows. The recommended approach is the one-line installer, which downloads a prebuilt native binary with zero dependencies. -- macOS, Linux, or WSL -- `curl` or `wget` +## One-line installer (recommended) -## Recommended install +On **macOS or Linux**, open a terminal and run: ```bash curl -fsSL https://feynman.is/install | bash ``` -## Verify +The installer detects your OS and architecture automatically. On macOS it supports both Intel and Apple Silicon. On Linux it supports x64 and arm64. The binary is installed to `~/.feynman/bin` and added to your `PATH`. -```bash -feynman --version -``` - -## Windows PowerShell +On **Windows**, open PowerShell as Administrator and run: ```powershell irm https://feynman.is/install.ps1 | iex ``` -## npm fallback +This installs the native Windows binary and adds Feynman to your user `PATH`. You can re-run either installer at any time to update to the latest version. -If you already manage Node yourself: +## npm / npx + +If you already have Node.js 18+ installed, you can install Feynman globally via npm: ```bash npm install -g @companion-ai/feynman ``` -## Local Development +Or run it directly without installing: -For contributing or local development: +```bash +npx @companion-ai/feynman +``` + +The npm distribution bundles the same core runtime as the native installer but depends on Node.js being present on your system. The native installer is preferred because it ships a self-contained binary with faster startup. + +## Post-install setup + +After installation, run the guided setup wizard to configure your model provider and API keys: + +```bash +feynman setup +``` + +This walks you through selecting a default model, authenticating with your provider, and optionally installing extra packages for features like web search and document preview. See the [Setup guide](/docs/getting-started/setup) for a detailed walkthrough. + +## Verifying the installation + +Confirm Feynman is installed and accessible: + +```bash +feynman --version +``` + +If you see a version number, you are ready to go. Run `feynman doctor` at any time to diagnose configuration issues, missing dependencies, or authentication problems. + +## Local development + +For contributing or running Feynman from source: ```bash git clone https://github.com/getcompanion-ai/feynman.git diff --git a/website/src/content/docs/getting-started/quickstart.md b/website/src/content/docs/getting-started/quickstart.md index 5b0dd82..5991c79 100644 --- a/website/src/content/docs/getting-started/quickstart.md +++ b/website/src/content/docs/getting-started/quickstart.md @@ -1,44 +1,60 @@ --- title: Quick Start -description: Get up and running with Feynman in 60 seconds +description: Get up and running with Feynman in under five minutes. section: Getting Started order: 2 --- -## First run +This guide assumes you have already [installed Feynman](/docs/getting-started/installation) and run `feynman setup`. If not, start there first. + +## Launch the REPL + +Start an interactive session by running: ```bash -feynman setup feynman ``` -`feynman setup` walks you through model authentication, alphaXiv login, web search configuration, and preview dependencies. +You are dropped into a conversational REPL where you can ask research questions, run workflows, and interact with agents in natural language. Type your question and press Enter. -## Ask naturally +## Run a one-shot prompt -Feynman routes your questions into the right workflow automatically. You don't need slash commands to get started. +If you want a quick answer without entering the REPL, use the `--prompt` flag: -``` -> What are the main approaches to RLHF alignment? +```bash +feynman --prompt "Summarize the key findings of Attention Is All You Need" ``` -Feynman will search papers, gather web sources, and produce a structured answer with citations. +Feynman processes the prompt, prints the response, and exits. This is useful for scripting or piping output into other tools. -## Use workflows directly +## Start a deep research session -For explicit control, use slash commands inside the REPL: +Deep research is the flagship workflow. It dispatches multiple agents to search, read, cross-reference, and synthesize information from academic papers and the web: -``` -> /deepresearch transformer scaling laws -> /lit multimodal reasoning benchmarks -> /review paper.pdf +```bash +feynman +> /deepresearch What are the current approaches to mechanistic interpretability in LLMs? ``` -## Output locations +The agents collaborate to produce a structured research report with citations, key findings, and open questions. The full report is saved to your session directory for later reference. -Feynman writes durable artifacts to canonical directories: +## Work with files -- `outputs/` — Reviews, reading lists, summaries -- `papers/` — Polished paper-style drafts -- `experiments/` — Runnable code and result logs -- `notes/` — Scratch notes and session logs +Feynman can read and write files in your working directory. Point it at a paper or codebase for targeted analysis: + +```bash +feynman --cwd ~/papers +> /review arxiv:2301.07041 +``` + +You can also ask Feynman to draft documents, audit code, or compare multiple sources by referencing local files directly in your prompts. + +## Explore slash commands + +Type `/help` inside the REPL to see all available slash commands. Each command maps to a workflow or utility, such as `/deepresearch`, `/review`, `/draft`, `/watch`, and more. You can also run any workflow directly from the CLI: + +```bash +feynman deepresearch "transformer architectures for protein folding" +``` + +See the [Slash Commands reference](/docs/reference/slash-commands) for the complete list. diff --git a/website/src/content/docs/getting-started/setup.md b/website/src/content/docs/getting-started/setup.md index bd0d292..7bd431e 100644 --- a/website/src/content/docs/getting-started/setup.md +++ b/website/src/content/docs/getting-started/setup.md @@ -1,78 +1,57 @@ --- title: Setup -description: Detailed setup guide for Feynman +description: Walk through the guided setup wizard to configure Feynman. section: Getting Started order: 3 --- -## Guided setup +The `feynman setup` wizard configures your model provider, API keys, and optional packages. It runs automatically on first launch, but you can re-run it at any time to change your configuration. + +## Running setup ```bash feynman setup ``` -This walks through four steps: +The wizard walks you through three stages: model configuration, authentication, and optional package installation. -### Model provider authentication +## Stage 1: Model selection -Feynman uses Pi's OAuth system for model access. The setup wizard prompts you to log in to your preferred provider. +Feynman supports multiple model providers. The setup wizard presents a list of available providers and models. Select your preferred default model using the arrow keys: -```bash -feynman model login +``` +? Select your default model: + anthropic:claude-sonnet-4-20250514 +> anthropic:claude-opus-4-20250514 + openai:gpt-4o + openai:o3 + google:gemini-2.5-pro ``` -### AlphaXiv login +The model you choose here becomes the default for all sessions. You can override it per-session with the `--model` flag or change it later via `feynman model set `. -AlphaXiv powers Feynman's paper search and analysis tools. Sign in with: +## Stage 2: Authentication -```bash -feynman alpha login +Depending on your chosen provider, setup prompts you for an API key or walks you through OAuth login. For providers that support Pi OAuth (like Anthropic and OpenAI), Feynman opens a browser window to complete the sign-in flow. Your credentials are stored securely in the Pi auth storage at `~/.feynman/`. + +For API key providers, you are prompted to paste your key directly: + +``` +? Enter your API key: sk-ant-... ``` -Check status anytime: +Keys are encrypted at rest and never sent anywhere except the provider's API endpoint. -```bash -feynman alpha status -``` +## Stage 3: Optional packages -### Web search routing +Feynman's core ships with the essentials, but some features require additional packages. The wizard asks if you want to install optional presets: -Feynman supports three web search backends: +- **session-search** -- Enables searching prior session transcripts for past research +- **memory** -- Automatic preference and correction memory across sessions +- **generative-ui** -- Interactive HTML-style widgets for rich output -- **auto** — Prefer Perplexity when configured, fall back to Gemini -- **perplexity** — Force Perplexity Sonar -- **gemini** — Force Gemini (default, zero-config via signed-in Chromium) +You can skip this step and install packages later with `feynman packages install `. -The default path requires no API keys — it uses Gemini Browser via your signed-in Chromium profile. +## Re-running setup -### Preview dependencies - -For PDF and HTML export of generated artifacts, Feynman needs `pandoc`: - -```bash -feynman --setup-preview -``` - -Global macOS installs also try to install pandoc automatically when Homebrew is available. Use the command above to retry manually. - -### Optional packages - -Feynman keeps the default package set lean so first-run installs stay fast. Install the heavier optional packages only when you need them: - -```bash -feynman packages list -feynman packages install memory -feynman packages install session-search -feynman packages install generative-ui -feynman packages install all-extras -``` - -## Diagnostics - -Run the doctor to check everything: - -```bash -feynman doctor -``` - -This verifies model auth, alphaXiv credentials, preview dependencies, and the Pi runtime. +Configuration is stored in `~/.feynman/settings.json`. Running `feynman setup` again overwrites previous settings. If you only need to change a specific value, edit the config file directly or use the targeted commands like `feynman model set` or `feynman alpha login`. diff --git a/website/src/content/docs/reference/cli-commands.md b/website/src/content/docs/reference/cli-commands.md index f69617e..fec6d4f 100644 --- a/website/src/content/docs/reference/cli-commands.md +++ b/website/src/content/docs/reference/cli-commands.md @@ -1,61 +1,88 @@ --- title: CLI Commands -description: Complete reference for Feynman CLI commands +description: Complete reference for all Feynman CLI commands and flags. section: Reference order: 1 --- -This page covers the dedicated Feynman CLI commands and compatibility flags. +This page covers the dedicated Feynman CLI commands and flags. Workflow commands like `feynman deepresearch` are also documented in the [Slash Commands](/docs/reference/slash-commands) reference since they map directly to REPL slash commands. -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 +## Core commands | 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. | +| `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, auth, packages) | -## Model Management +## 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. | +| `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 for all sessions | -## AlphaXiv +These commands manage your model provider configuration. The `model set` command updates `~/.feynman/settings.json` with the new default. The format is `provider:model-name`, for example `anthropic:claude-sonnet-4-20250514`. + +## AlphaXiv commands | Command | Description | | --- | --- | -| `feynman alpha login` | Sign in to alphaXiv. | -| `feynman alpha logout` | Clear alphaXiv auth. | -| `feynman alpha status` | Check alphaXiv auth status. | +| `feynman alpha login` | Sign in to alphaXiv | +| `feynman alpha logout` | Clear alphaXiv auth | +| `feynman alpha status` | Check alphaXiv auth status | -## Utilities +AlphaXiv authentication enables Feynman to search and retrieve papers, access discussion threads, and pull citation metadata. You can also manage AlphaXiv auth from inside the REPL with `/alpha-login`, `/alpha-status`, and `/alpha-logout`. + +## Package management | Command | Description | | --- | --- | -| `feynman search status` | Show Pi web-access status and config path. | -| `feynman update [package]` | Update installed packages, or a specific package. | +| `feynman packages list` | List all available packages and their install status | +| `feynman packages install ` | Install an optional package preset | +| `feynman update [package]` | Update installed packages, or a specific package by name | + +Use `feynman packages list` to see which optional packages are available and which are already installed. The `all-extras` preset installs every optional package at once. + +## Utility commands + +| Command | Description | +| --- | --- | +| `feynman search status` | Show Pi web-access status and config path | + +## Workflow commands + +All research workflow slash commands can also be invoked directly from the CLI: + +```bash +feynman deepresearch "topic" +feynman lit "topic" +feynman review artifact.md +feynman audit 2401.12345 +feynman replicate "claim" +feynman compare "topic" +feynman draft "topic" +``` + +These are equivalent to launching the REPL and typing the corresponding slash command. ## 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`. | +| `--prompt ""` | Run one prompt and exit (one-shot mode) | +| `--model ` | Force a specific model for this session | +| `--thinking ` | Set thinking level: `off`, `minimal`, `low`, `medium`, `high`, `xhigh` | +| `--cwd ` | Set the working directory for all file operations | +| `--session-dir ` | Set the session storage directory | +| `--new-session` | Start a new persisted session | +| `--alpha-login` | Sign in to alphaXiv and exit | +| `--alpha-logout` | Clear alphaXiv auth and exit | +| `--alpha-status` | Show alphaXiv auth status and exit | +| `--doctor` | Alias for `feynman doctor` | +| `--setup-preview` | Install preview dependencies (pandoc) | diff --git a/website/src/content/docs/reference/package-stack.md b/website/src/content/docs/reference/package-stack.md index 6de0f84..a6d6960 100644 --- a/website/src/content/docs/reference/package-stack.md +++ b/website/src/content/docs/reference/package-stack.md @@ -1,36 +1,76 @@ --- title: Package Stack -description: Curated Pi packages bundled with Feynman +description: Core and optional Pi packages bundled with Feynman. section: Reference order: 3 --- -Curated Pi packages bundled with Feynman. The runtime package list lives in `.feynman/settings.json`. +Feynman is built on the Pi runtime and uses curated Pi packages for its capabilities. Packages are managed through `feynman packages` commands and configured in `~/.feynman/settings.json`. ## Core packages -Installed by default. +These are installed by default with every Feynman installation. They provide the foundation for all research workflows. | 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-mermaid` | Diagrams in the TUI. | -| `@aliou/pi-processes` | Long-running experiments and log tails. | -| `pi-zotero` | Citation-library workflows. | -| `pi-schedule-prompt` | Recurring and deferred research jobs. | -| `@tmustier/pi-ralph-wiggum` | Long-running agent loops for iterative development. | +| --- | --- | +| `pi-subagents` | Parallel agent spawning for literature gathering and task decomposition. Powers the multi-agent workflows | +| `pi-btw` | Fast side-thread `/btw` conversations without interrupting the main research run | +| `pi-docparser` | Parse PDFs, Office documents, spreadsheets, and images for content extraction | +| `pi-web-access` | Web browsing, GitHub access, PDF fetching, and media retrieval | +| `pi-markdown-preview` | Render Markdown and LaTeX-heavy research documents as polished HTML/PDF | +| `@walterra/pi-charts` | Generate charts and quantitative visualizations from data | +| `pi-mermaid` | Render Mermaid diagrams in the terminal UI | +| `@aliou/pi-processes` | Manage long-running experiments, background tasks, and log tailing | +| `pi-zotero` | Integration with Zotero for citation library management | +| `pi-schedule-prompt` | Schedule recurring and deferred research jobs. Powers the `/watch` workflow | +| `@tmustier/pi-ralph-wiggum` | Long-running agent loops for iterative development. Powers `/autoresearch` | + +These packages are updated together when you run `feynman update`. You do not need to install them individually. ## Optional packages -Install on demand with `feynman packages install `. +Install on demand with `feynman packages install `. These extend Feynman with capabilities that not every user needs. -| Package | Purpose | -|---------|---------| -| `pi-generative-ui` | Interactive HTML-style widgets. | -| `@kaiserlich-dev/pi-session-search` | Indexed session recall and summarize/resume UI. | -| `@samfp/pi-memory` | Automatic preference and correction memory across sessions. | +| Package | Preset | Purpose | +| --- | --- | --- | +| `pi-generative-ui` | `generative-ui` | Interactive HTML-style widgets for rich output | +| `@kaiserlich-dev/pi-session-search` | `session-search` | Indexed session recall with summarize and resume UI. Powers `/search` | +| `@samfp/pi-memory` | `memory` | Automatic preference and correction memory across sessions | + +## Installing and managing packages + +List all available packages and their install status: + +```bash +feynman packages list +``` + +Install a specific optional preset: + +```bash +feynman packages install session-search +feynman packages install memory +feynman packages install generative-ui +``` + +Install all optional packages at once: + +```bash +feynman packages install all-extras +``` + +## Updating packages + +Update all installed packages to their latest versions: + +```bash +feynman update +``` + +Update a specific package: + +```bash +feynman update pi-subagents +``` + +Running `feynman update` without arguments updates everything. Pass a specific package name to update just that one. Updates are safe and preserve your configuration. diff --git a/website/src/content/docs/reference/slash-commands.md b/website/src/content/docs/reference/slash-commands.md index 5e66f59..ef71665 100644 --- a/website/src/content/docs/reference/slash-commands.md +++ b/website/src/content/docs/reference/slash-commands.md @@ -1,41 +1,63 @@ --- title: Slash Commands -description: Repo-owned REPL slash commands +description: Complete reference for 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/`. +Slash commands are available inside the Feynman REPL. They map to research workflows, project management tools, and setup utilities. Type `/help` inside the REPL for the live command list, which may include additional commands from installed Pi packages. -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 +## 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. | +| `/deepresearch ` | Run a thorough, source-heavy investigation and produce a research brief with inline citations | +| `/lit ` | Run a structured literature review with consensus, disagreements, and open questions | +| `/review ` | Simulate a peer review with severity-graded feedback and inline annotations | +| `/audit ` | Compare a paper's claims against its public codebase for mismatches and reproducibility risks | +| `/replicate ` | Plan or execute a replication workflow for a paper, claim, or benchmark | +| `/compare ` | Compare multiple sources and produce an agreement/disagreement matrix | +| `/draft ` | Generate a paper-style draft from research findings | +| `/autoresearch ` | Start an autonomous experiment loop that iteratively optimizes toward a goal | +| `/watch ` | Set up recurring research monitoring on a topic | -## Project & Session +These are the primary commands you will use day-to-day. Each workflow dispatches one or more specialized agents (researcher, reviewer, writer, verifier) depending on the task. + +## Project and 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. | +| `/log` | Write a durable session log with completed work, findings, open questions, and next steps | +| `/jobs` | Inspect active background work: running processes, scheduled follow-ups, and active watches | +| `/help` | Show grouped Feynman commands and prefill the editor with a selected command | +| `/init` | Bootstrap `AGENTS.md` and session-log folders for a new research project | +| `/search` | Search prior session transcripts for past research and findings | +| `/preview` | Preview the current artifact as rendered HTML or PDF | -## Setup +Session management commands help you organize ongoing work. The `/log` command is particularly useful at the end of a research session to capture what was accomplished and what remains. + +## Setup commands | 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. | +| `/alpha-login` | Sign in to alphaXiv from inside the REPL | +| `/alpha-status` | Show alphaXiv authentication status | +| `/alpha-logout` | Clear alphaXiv auth from inside the REPL | + +These provide a convenient way to manage alphaXiv authentication without leaving the REPL. + +## Running workflows from the CLI + +All research workflow slash commands can also be run directly from the command line: + +```bash +feynman deepresearch "topic" +feynman lit "topic" +feynman review artifact.md +feynman audit 2401.12345 +feynman replicate "claim" +feynman compare "topic" +feynman draft "topic" +``` + +This is equivalent to launching the REPL and typing the slash command. The CLI form is useful for scripting and automation. diff --git a/website/src/content/docs/tools/alphaxiv.md b/website/src/content/docs/tools/alphaxiv.md index b590227..747d84f 100644 --- a/website/src/content/docs/tools/alphaxiv.md +++ b/website/src/content/docs/tools/alphaxiv.md @@ -1,40 +1,48 @@ --- title: AlphaXiv -description: Paper search and analysis tools +description: Search and retrieve academic papers through the AlphaXiv integration. section: Tools order: 1 --- -## Overview +AlphaXiv is the primary academic paper search and retrieval tool in Feynman. It provides access to a vast corpus of research papers, discussion threads, citation metadata, and full-text PDFs. The researcher agent uses AlphaXiv as its primary source for academic content. -AlphaXiv powers Feynman's academic paper workflows. All tools require an alphaXiv account — sign in with `feynman alpha login`. +## Authentication -## Tools +AlphaXiv requires authentication. Set it up during initial setup or at any time: -### alpha_search +```bash +feynman alpha login +``` -Paper discovery with three search modes: +Check your authentication status: -- **semantic** — Meaning-based search across paper content -- **keyword** — Traditional keyword matching -- **agentic** — AI-powered search that interprets your intent +```bash +feynman alpha status +``` -### alpha_get_paper +You can also manage AlphaXiv auth from inside the REPL with `/alpha-login`, `/alpha-status`, and `/alpha-logout`. -Fetch a paper's report (structured summary) or full raw text by arXiv ID. +## What it provides -### alpha_ask_paper +AlphaXiv gives Feynman access to several capabilities that power the research workflows: -Ask a targeted question about a specific paper. Returns an answer grounded in the paper's content. +- **Paper search** -- Find papers by topic, author, keyword, or arXiv ID +- **Full-text retrieval** -- Download and parse complete PDFs for in-depth reading +- **Citation metadata** -- Access citation counts, references, and citation chains +- **Discussion threads** -- Read community discussions and annotations on papers +- **Related papers** -- Discover connected work through citation graphs and recommendations -### alpha_annotate_paper +## How it is used -Add persistent local notes to a paper. Annotations are stored locally and persist across sessions. +You do not invoke AlphaXiv directly in most cases. The researcher agent uses it automatically during workflows like deep research, literature review, and peer review. When you provide an arXiv ID (like `arxiv:2401.12345`), Feynman fetches the paper through AlphaXiv. -### alpha_list_annotations +AlphaXiv search is especially powerful when combined with citation chaining. The researcher agent can follow references from a relevant paper to discover foundational work, then follow forward citations to find papers that built on it. This produces a much more complete picture than keyword search alone. -Recall all annotations across papers and sessions. +## Configuration -### alpha_read_code +AlphaXiv configuration is managed through the CLI commands listed above. Authentication tokens are stored in `~/.feynman/auth/` and persist across sessions. No additional configuration is needed beyond logging in. -Read source code from a paper's linked GitHub repository. Useful for auditing or replication planning. +## Without AlphaXiv + +If you choose not to authenticate with AlphaXiv, Feynman still functions but with reduced academic search capabilities. It falls back to web search for finding papers, which works for well-known work but misses the citation metadata, discussion threads, and full-text access that AlphaXiv provides. For serious research workflows, AlphaXiv authentication is strongly recommended. diff --git a/website/src/content/docs/tools/preview.md b/website/src/content/docs/tools/preview.md index e9db9a8..0cef232 100644 --- a/website/src/content/docs/tools/preview.md +++ b/website/src/content/docs/tools/preview.md @@ -1,34 +1,50 @@ --- title: Preview -description: Preview generated artifacts in browser or PDF +description: Preview generated research artifacts as rendered HTML or PDF. section: Tools order: 4 --- -## Overview - -The `preview_file` tool opens generated artifacts in your browser or PDF viewer. +The preview tool renders generated artifacts as polished HTML or PDF documents and opens them in your browser or PDF viewer. This is particularly useful for research briefs, paper drafts, and any document that contains LaTeX math, tables, or complex formatting that does not render well in a terminal. ## Usage -Inside the REPL: +Inside the REPL, preview the most recent artifact: ``` /preview ``` -Or Feynman will suggest previewing when you generate artifacts that benefit from rendered output (Markdown with LaTeX, HTML reports, etc.). +Feynman suggests previewing automatically when you generate artifacts that benefit from rendered output. You can also preview a specific file: + +``` +/preview outputs/scaling-laws-brief.md +``` ## Requirements -Preview requires `pandoc` for PDF/HTML rendering. Install it with: +Preview requires `pandoc` for Markdown-to-HTML and Markdown-to-PDF rendering. Install the preview dependencies with: ```bash feynman --setup-preview ``` +On macOS with Homebrew, the setup command attempts to install pandoc automatically. On Linux, it checks for pandoc in your package manager. If the automatic install does not work, install pandoc manually from [pandoc.org](https://pandoc.org/installing.html) and rerun `feynman --setup-preview` to verify. + ## Supported formats -- Markdown (with LaTeX math rendering) -- HTML -- PDF +The preview tool handles three output formats: + +- **Markdown** -- Rendered as HTML with full LaTeX math support via KaTeX, syntax-highlighted code blocks, and clean typography +- **HTML** -- Opened directly in your default browser with no conversion step +- **PDF** -- Generated via pandoc with LaTeX rendering, suitable for sharing or printing + +## How it works + +The `pi-markdown-preview` package handles the rendering pipeline. For Markdown files, it converts to HTML with a clean stylesheet, proper code highlighting, and rendered math equations. The preview opens in your default browser as a local file. + +For documents with heavy math notation (common in research drafts), the preview ensures all LaTeX expressions render correctly. Inline math (`$...$`) and display math (`$$...$$`) are both supported. Tables, citation lists, and nested blockquotes all render with proper formatting. + +## Customization + +The preview stylesheet is designed for research documents and includes styles for proper heading hierarchy, code blocks with syntax highlighting, tables with clean borders, math equations (inline and display), citation formatting, and blockquotes. The stylesheet is bundled with the package and does not require any configuration. diff --git a/website/src/content/docs/tools/session-search.md b/website/src/content/docs/tools/session-search.md index 2a18a5c..9dfb6ca 100644 --- a/website/src/content/docs/tools/session-search.md +++ b/website/src/content/docs/tools/session-search.md @@ -1,26 +1,47 @@ --- title: Session Search -description: Search prior Feynman session transcripts +description: Search prior Feynman session transcripts to recall past research. section: Tools order: 3 --- -## Overview +The session search tool recovers prior Feynman work from stored session transcripts. Every Feynman session is persisted to disk, and session search lets you find and reference past research, findings, and generated artifacts without starting over. -The `session_search` tool recovers prior Feynman work from stored session transcripts. Useful for picking up previous research threads or finding past findings. +## Installation + +Session search is an optional package. Install it with: + +```bash +feynman packages install session-search +``` + +Once installed, the `/search` slash command and automatic session recall become available in all future sessions. ## Usage -Inside the REPL: +Inside the REPL, invoke session search directly: ``` -/search +/search transformer scaling laws ``` -Or use the tool directly — Feynman will invoke `session_search` automatically when you reference prior work. +You can also reference prior work naturally in conversation. Feynman invokes session search automatically when you mention previous research or ask to continue earlier work. For example, saying "pick up where I left off on protein folding" triggers a session search behind the scenes. ## What it searches -- Full session transcripts -- Tool outputs and agent results -- Generated artifacts and their content +Session search indexes the full contents of your session history: + +- Full session transcripts including your prompts and Feynman's responses +- Tool outputs and agent results from workflows like deep research and literature review +- Generated artifacts such as drafts, reports, and comparison matrices +- Metadata like timestamps, topics, and workflow types + +The search uses both keyword matching and semantic similarity to find relevant past work. Results include the session ID, timestamp, and relevant excerpts so you can quickly identify which session contains the information you need. + +## When to use it + +Session search is valuable when you want to pick up a previous research thread without rerunning an expensive workflow, find specific findings or citations from a past deep research session, reference prior analysis in a new research context, or check what you have already investigated on a topic before launching a new round. + +## How it works + +The `@kaiserlich-dev/pi-session-search` package provides the underlying search and indexing. Sessions are stored in `~/.feynman/sessions/` by default (configurable with `--session-dir`). The index is built incrementally as new sessions complete, so search stays fast even with hundreds of past sessions. diff --git a/website/src/content/docs/tools/web-search.md b/website/src/content/docs/tools/web-search.md index fe33b1d..9b5b890 100644 --- a/website/src/content/docs/tools/web-search.md +++ b/website/src/content/docs/tools/web-search.md @@ -1,34 +1,57 @@ --- title: Web Search -description: Web search routing and configuration +description: Web search routing, configuration, and usage within Feynman. section: Tools order: 2 --- +Feynman's web search tool retrieves current information from the web during research workflows. It supports multiple simultaneous queries, domain filtering, recency filtering, and optional full-page content retrieval. The researcher agent uses web search alongside AlphaXiv to gather evidence from non-academic sources like blog posts, documentation, news, and code repositories. + ## Routing modes -Feynman supports three web search backends: +Feynman supports three web search backends. You can configure which one to use or let Feynman choose automatically: | Mode | Description | -|------|-------------| +| --- | --- | | `auto` | Prefer Perplexity when configured, fall back to Gemini | -| `perplexity` | Force Perplexity Sonar | -| `gemini` | Force Gemini (default) | +| `perplexity` | Force Perplexity Sonar for all web searches | +| `gemini` | Force Gemini grounding (default, zero-config) | ## Default behavior -The default path is zero-config Gemini Browser via a signed-in Chromium profile. No API keys required. +The default path is zero-config Gemini grounding via a signed-in Chromium profile. No API keys are required. This works on macOS and Linux where a Chromium-based browser is installed and signed in to a Google account. -## Check current config +For headless environments, CI pipelines, or servers without a browser, configure an explicit API key for either Perplexity or Gemini in `~/.feynman/web-search.json`. + +## Configuration + +Check the current search configuration: ```bash feynman search status ``` -## Advanced configuration +Edit `~/.feynman/web-search.json` to configure the backend: -Edit `~/.feynman/web-search.json` directly to set: +```json +{ + "route": "auto", + "perplexityApiKey": "pplx-...", + "geminiApiKey": "AIza..." +} +``` -- Gemini API keys -- Perplexity API keys -- Custom routing preferences +Set `route` to `auto`, `perplexity`, or `gemini`. When using `auto`, Feynman prefers Perplexity if a key is present, then falls back to Gemini. + +## Search features + +The web search tool supports several capabilities that the researcher agent leverages automatically: + +- **Multiple queries** -- Send 2-4 varied-angle queries simultaneously for broader coverage of a topic +- **Domain filtering** -- Restrict results to specific domains like `arxiv.org`, `github.com`, or `nature.com` +- **Recency filtering** -- Filter results by date, useful for fast-moving topics where only recent work matters +- **Full content retrieval** -- Fetch complete page content for the most important results rather than relying on snippets + +## When it runs + +Web search is used automatically by researcher agents during workflows. You do not need to invoke it directly. The researcher decides when to use web search versus paper search based on the topic and source availability. Academic topics lean toward AlphaXiv; engineering and applied topics lean toward web search. diff --git a/website/src/content/docs/workflows/audit.md b/website/src/content/docs/workflows/audit.md index 364ec19..afe8d99 100644 --- a/website/src/content/docs/workflows/audit.md +++ b/website/src/content/docs/workflows/audit.md @@ -1,39 +1,50 @@ --- title: Code Audit -description: Compare paper claims against public codebases +description: Compare a paper's claims against its public codebase for reproducibility. section: Workflows order: 4 --- +The code audit workflow compares a paper's claims against its public codebase to identify mismatches, undocumented deviations, and reproducibility risks. It bridges the gap between what a paper says and what the code actually does. + ## 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 +From the REPL: ``` -/audit 2401.12345 +/audit arxiv:2401.12345 ``` -## Output +``` +/audit https://github.com/org/repo --paper arxiv:2401.12345 +``` -An audit report with: +From the CLI: -- Claim-by-claim verification -- Identified mismatches -- Missing components -- Reproducibility risk assessment +```bash +feynman audit 2401.12345 +``` + +When given an arXiv ID, Feynman locates the associated code repository from the paper's links, Papers With Code, or GitHub search. You can also provide the repository URL directly. + +## How it works + +The audit workflow operates in two passes. First, the researcher agent reads the paper and extracts all concrete claims: hyperparameters, architecture details, training procedures, dataset splits, evaluation metrics, and reported results. Each claim is tagged with its location in the paper for traceability. + +Second, the verifier agent examines the codebase to find the corresponding implementation for each claim. It checks configuration files, training scripts, model definitions, and evaluation code to verify that the code matches the paper's description. When it finds a discrepancy -- a hyperparameter that differs, a training step that was described but not implemented, or an evaluation procedure that deviates from the paper -- it documents the mismatch with exact file paths and line numbers. + +The audit also checks for common reproducibility issues like missing random seeds, non-deterministic operations without pinned versions, hardcoded paths, and absent environment specifications. + +## Output format + +The audit report contains: + +- **Match Summary** -- Percentage of claims that match the code +- **Confirmed Claims** -- Claims that are accurately reflected in the codebase +- **Mismatches** -- Discrepancies between paper and code with evidence from both +- **Missing Implementations** -- Claims in the paper with no corresponding code +- **Reproducibility Risks** -- Issues like missing seeds, unpinned dependencies, or hardcoded paths + +## When to use it + +Use `/audit` when you are deciding whether to build on a paper's results, when replicating an experiment, or when reviewing a paper for a venue and want to verify its claims against the code. It is also useful for auditing your own papers before submission to catch inconsistencies between your writeup and implementation. diff --git a/website/src/content/docs/workflows/autoresearch.md b/website/src/content/docs/workflows/autoresearch.md index 57684fc..0431d8c 100644 --- a/website/src/content/docs/workflows/autoresearch.md +++ b/website/src/content/docs/workflows/autoresearch.md @@ -1,44 +1,58 @@ --- title: Autoresearch -description: Autonomous experiment optimization loop +description: Start an autonomous experiment loop that iteratively optimizes toward a goal. section: Workflows order: 8 --- +The autoresearch workflow launches an autonomous research loop that iteratively designs experiments, runs them, analyzes results, and proposes next steps. It is designed for open-ended exploration where the goal is optimization or discovery rather than a specific answer. + ## 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 +From the REPL: ``` -/autoresearch # start or resume -/autoresearch off # stop, keep data -/autoresearch clear # delete all state, start fresh +/autoresearch Optimize prompt engineering strategies for math reasoning on GSM8K ``` -## Example +From the CLI: + +```bash +feynman autoresearch "Optimize prompt engineering strategies for math reasoning on GSM8K" +``` + +Autoresearch runs as a long-lived background process. You can monitor its progress, pause it, or redirect its focus at any time. + +## How it works + +The autoresearch workflow is powered by `@tmustier/pi-ralph-wiggum`, which provides long-running agent loops. The workflow begins by analyzing the research goal and designing an initial experiment plan. It then enters an iterative loop: + +1. **Hypothesis** -- The agent proposes a hypothesis or modification based on current results +2. **Experiment** -- It designs and executes an experiment to test the hypothesis +3. **Analysis** -- Results are analyzed and compared against prior iterations +4. **Decision** -- The agent decides whether to continue the current direction, try a variation, or pivot to a new approach + +Each iteration builds on the previous ones. The agent maintains a running log of what has been tried, what worked, what failed, and what the current best result is. This prevents repeating failed approaches and ensures the search progresses efficiently. + +## Monitoring and control + +Check active autoresearch jobs: ``` -/autoresearch optimize the learning rate schedule for better convergence +/jobs ``` + +Autoresearch runs in the background, so you can continue using Feynman for other tasks while it works. The `/jobs` command shows the current status, iteration count, and best result so far. You can interrupt the loop at any time to provide guidance or redirect the search. + +## Output format + +Autoresearch produces a running experiment log that includes: + +- **Experiment History** -- What was tried in each iteration with parameters and results +- **Best Configuration** -- The best-performing setup found so far +- **Ablation Results** -- Which factors mattered most based on the experiments run +- **Recommendations** -- Suggested next steps based on observed trends + +## When to use it + +Use `/autoresearch` for tasks that benefit from iterative exploration: hyperparameter optimization, prompt engineering, architecture search, or any problem where the search space is large and the feedback signal is clear. It is not the right tool for answering a specific question (use `/deepresearch` for that) but excels at finding what works best through systematic experimentation. diff --git a/website/src/content/docs/workflows/compare.md b/website/src/content/docs/workflows/compare.md index b025781..2e6f2c9 100644 --- a/website/src/content/docs/workflows/compare.md +++ b/website/src/content/docs/workflows/compare.md @@ -1,29 +1,50 @@ --- title: Source Comparison -description: Compare multiple sources with agreement/disagreement matrix +description: Compare multiple sources and produce an agreement/disagreement matrix. section: Workflows order: 6 --- +The source comparison workflow analyzes multiple papers, articles, or documents side by side and produces a structured matrix showing where they agree, disagree, and differ in methodology. It is useful for understanding conflicting results, evaluating competing approaches, and identifying which claims have broad support versus limited evidence. + ## 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 +From the REPL: ``` -/compare approaches to constitutional AI training +/compare "GPT-4 vs Claude vs Gemini on reasoning benchmarks" ``` -## Output +``` +/compare arxiv:2401.12345 arxiv:2402.67890 arxiv:2403.11111 +``` -- Source-by-source breakdown -- Agreement/disagreement matrix -- Synthesis of key differences -- Assessment of which positions have stronger evidence +From the CLI: + +```bash +feynman compare "topic or list of sources" +``` + +You can provide a topic and let Feynman find the sources, or list specific papers and documents for a targeted comparison. + +## How it works + +The comparison workflow begins by identifying or retrieving the sources to compare. If you provide a topic, the researcher agents find the most relevant and contrasting papers. If you provide specific IDs or files, they are used directly. + +Each source is analyzed independently first: the researcher agents extract claims, results, methodology, and limitations from each document. Then the comparison engine aligns claims across sources -- identifying where two papers make the same claim (agreement), where they report contradictory results (disagreement), and where they measure different things entirely (non-overlapping scope). + +The alignment step handles the nuance that papers often measure slightly different quantities or use different evaluation protocols. The comparison explicitly notes when an apparent disagreement might be explained by methodological differences rather than genuine conflicting results. + +## Output format + +The comparison produces: + +- **Source Summaries** -- One-paragraph summary of each source's key contributions +- **Agreement Matrix** -- Claims supported by multiple sources with citation evidence +- **Disagreement Matrix** -- Conflicting claims with analysis of why sources diverge +- **Methodology Differences** -- How the sources differ in approach, data, and evaluation +- **Synthesis** -- An overall assessment of which claims are well-supported and which remain contested + +## When to use it + +Use `/compare` when you encounter contradictory results in the literature, when evaluating competing approaches to the same problem, or when you need to understand how different research groups frame the same topic. It is also useful for writing related work sections where you need to accurately characterize the state of debate. diff --git a/website/src/content/docs/workflows/deep-research.md b/website/src/content/docs/workflows/deep-research.md index 8333ba4..1b1ee5a 100644 --- a/website/src/content/docs/workflows/deep-research.md +++ b/website/src/content/docs/workflows/deep-research.md @@ -1,40 +1,48 @@ --- title: Deep Research -description: Thorough source-heavy investigation with parallel agents +description: Run a thorough, multi-agent investigation that produces a cited research brief. section: Workflows order: 1 --- +Deep research is the flagship Feynman workflow. It dispatches multiple researcher agents in parallel to search academic papers, web sources, and code repositories, then synthesizes everything into a structured research brief with inline citations. + ## 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 +From the REPL: ``` -/deepresearch transformer scaling laws and their implications for compute-optimal training +/deepresearch What are the current approaches to mechanistic interpretability in LLMs? ``` -## Output +From the CLI: -Produces a structured research brief with: +```bash +feynman deepresearch "What are the current approaches to mechanistic interpretability in LLMs?" +``` -- Executive summary -- Key findings organized by theme -- Evidence tables with source links -- Open questions and suggested next steps -- Numbered sources section with direct URLs +Both forms are equivalent. The workflow begins immediately and streams progress as agents discover and analyze sources. + +## How it works + +The deep research workflow proceeds through four phases. First, the researcher agents fan out to search AlphaXiv for relevant papers and the web for non-academic sources like blog posts, documentation, and code repositories. Each agent tackles a different angle of the topic to maximize coverage. + +Second, the agents read and extract key findings from the most relevant sources. They pull claims, methodology details, results, and limitations from each paper or article. For academic papers, they access the full PDF through AlphaXiv when available. + +Third, a synthesis step cross-references findings across sources, identifies areas of consensus and disagreement, and organizes the material into a coherent narrative. The writer agent structures the output as a research brief with sections for background, key findings, open questions, and references. + +Finally, the verifier agent spot-checks claims against their cited sources to flag any misattributions or unsupported assertions. The finished report is saved to your session directory and can be previewed as rendered HTML with `/preview`. + +## Output format + +The research brief follows a consistent structure: + +- **Summary** -- A concise overview of the topic and key takeaways +- **Background** -- Context and motivation for the research area +- **Key Findings** -- The main results organized by theme, with inline citations +- **Open Questions** -- Unresolved issues and promising research directions +- **References** -- Full citation list with links to source papers and articles + +## Customization + +You can steer the research by being specific in your prompt. Narrow topics produce more focused briefs. Broad topics produce survey-style overviews. You can also specify constraints like "focus on papers from 2024" or "only consider empirical results" to guide the agents. diff --git a/website/src/content/docs/workflows/draft.md b/website/src/content/docs/workflows/draft.md index d38d1ae..25632a4 100644 --- a/website/src/content/docs/workflows/draft.md +++ b/website/src/content/docs/workflows/draft.md @@ -1,37 +1,51 @@ --- title: Draft Writing -description: Paper-style draft generation from research findings +description: Generate a paper-style draft from research findings and session context. section: Workflows order: 7 --- +The draft writing workflow generates structured academic-style documents from your research findings. It uses the writer agent to produce well-organized prose with proper citations, sections, and formatting suitable for papers, reports, or blog posts. + ## 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 +From the REPL: ``` -/draft survey of differentiable physics simulators +/draft A survey of retrieval-augmented generation techniques ``` -The writer agent works only from supplied evidence — it never fabricates content. If evidence is insufficient, it explicitly notes the gaps. +``` +/draft --from-session +``` + +From the CLI: + +```bash +feynman draft "A survey of retrieval-augmented generation techniques" +``` + +When used with `--from-session`, the writer draws from the current session's research findings, making it a natural follow-up to a deep research or literature review workflow. + +## How it works + +The draft workflow leverages the writer agent, which specializes in producing structured academic prose. When given a topic, it first consults the researcher agents to gather source material, then organizes the findings into a coherent document with proper narrative flow. + +When working from existing session context (after a deep research or literature review), the writer skips the research phase and works directly with the findings already gathered. This produces a more focused draft because the source material has already been vetted and organized. + +The writer pays attention to academic conventions: claims are attributed to their sources with inline citations, methodology sections describe procedures precisely, and limitations are discussed honestly. The draft includes placeholder sections for any content the writer cannot generate from available sources, clearly marking what needs human input. + +## Output format + +The draft follows standard academic structure: + +- **Abstract** -- Concise summary of the document's scope and findings +- **Introduction** -- Motivation, context, and contribution statement +- **Body Sections** -- Organized by topic with subsections as needed +- **Discussion** -- Interpretation of findings and implications +- **Limitations** -- Honest assessment of scope and gaps +- **References** -- Complete bibliography in a consistent citation format + +## Preview and iteration + +After generating the draft, use `/preview` to render it as HTML or PDF with proper formatting, math rendering, and typography. You can iterate on the draft by asking Feynman to revise specific sections, add more detail, or restructure the argument. diff --git a/website/src/content/docs/workflows/literature-review.md b/website/src/content/docs/workflows/literature-review.md index 451959d..16bc1e1 100644 --- a/website/src/content/docs/workflows/literature-review.md +++ b/website/src/content/docs/workflows/literature-review.md @@ -1,31 +1,45 @@ --- title: Literature Review -description: Map consensus, disagreements, and open questions +description: Run a structured literature review with consensus mapping and gap analysis. section: Workflows order: 2 --- +The literature review workflow produces a structured survey of the academic landscape on a given topic. Unlike deep research which aims for a comprehensive brief, the literature review focuses specifically on mapping the state of the field -- what researchers agree on, where they disagree, and what remains unexplored. + ## 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 +From the REPL: ``` -/lit multimodal reasoning benchmarks for large language models +/lit Scaling laws for language model performance ``` -## Output +From the CLI: -A structured review covering: +```bash +feynman lit "Scaling laws for language model performance" +``` -- **Consensus** — What the field agrees on -- **Disagreements** — Where sources conflict -- **Open questions** — What remains unresolved -- **Sources** — Direct links to all referenced papers and articles +## How it works + +The literature review workflow begins by having researcher agents search for papers on the topic across AlphaXiv and the web. The agents prioritize survey papers, highly-cited foundational work, and recent publications to capture both established knowledge and the current frontier. + +After gathering sources, the agents extract claims, results, and methodology from each paper. The synthesis step then organizes findings into a structured review that maps out where the community has reached consensus, where active debate exists, and where gaps in the literature remain. + +The output is organized chronologically and thematically, showing how ideas evolved over time and how different research groups approach the problem differently. Citation counts and publication venues are used as signals for weighting claims, though the review explicitly notes when influential work contradicts the mainstream view. + +## Output format + +The literature review produces: + +- **Scope and Methodology** -- What was searched and how papers were selected +- **Consensus** -- Claims that most papers agree on, with supporting citations +- **Disagreements** -- Active debates where papers present conflicting evidence or interpretations +- **Open Questions** -- Topics that the literature has not adequately addressed +- **Timeline** -- Key milestones and how the field evolved +- **References** -- Complete bibliography organized by relevance + +## When to use it + +Use `/lit` when you need a map of the research landscape rather than a deep dive into a specific question. It is particularly useful at the start of a new research project when you need to understand what has already been done, or when preparing a related work section for a paper. diff --git a/website/src/content/docs/workflows/replication.md b/website/src/content/docs/workflows/replication.md index c2ca4cf..96b7148 100644 --- a/website/src/content/docs/workflows/replication.md +++ b/website/src/content/docs/workflows/replication.md @@ -1,42 +1,50 @@ --- title: Replication -description: Plan replications of papers and claims +description: Plan or execute a replication of a paper's experiments and claims. section: Workflows order: 5 --- +The replication workflow helps you plan and execute reproductions of published experiments, benchmark results, or specific claims. It generates a detailed replication plan, identifies potential pitfalls, and can guide you through the execution step by step. + ## 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 -- **Docker** — run experiment code inside an isolated Docker container -- **Plan only** — produce the replication plan without executing - -## Example +From the REPL: ``` -/replicate "chain-of-thought prompting improves math reasoning" +/replicate arxiv:2401.12345 ``` -## Output +``` +/replicate "The claim that sparse attention achieves 95% of dense attention quality at 60% compute" +``` -A replication plan covering: +From the CLI: -- 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 +```bash +feynman replicate "paper or claim" +``` -If an execution environment is selected, also produces runnable scripts and captured results. +You can point the workflow at a full paper for a comprehensive replication plan, or at a specific claim for a focused reproduction. + +## How it works + +The replication workflow starts with the researcher agent reading the target paper and extracting every detail needed for reproduction: model architecture, hyperparameters, training schedule, dataset preparation, evaluation protocol, and hardware requirements. It cross-references these details against the codebase (if available) using the same machinery as the code audit workflow. + +Next, the workflow generates a structured replication plan that breaks the experiment into discrete steps, estimates compute and time requirements, and identifies where the paper is underspecified. For each underspecified detail, it suggests reasonable defaults based on common practices in the field and flags the assumption as a potential source of divergence. + +The plan also includes a risk assessment: which parts of the experiment are most likely to cause replication failure, what tolerance to expect for numerical results, and which claims are most sensitive to implementation details. + +## Output format + +The replication plan includes: + +- **Requirements** -- Hardware, software, data, and estimated compute cost +- **Step-by-step Plan** -- Ordered steps from environment setup through final evaluation +- **Underspecified Details** -- Where the paper leaves out information needed for replication +- **Risk Assessment** -- Which steps are most likely to cause divergence from reported results +- **Success Criteria** -- What results would constitute a successful replication + +## Iterative execution + +After generating the plan, you can execute the replication interactively. Feynman walks you through each step, helps you write the code, monitors training runs, and compares intermediate results against the paper's reported values. When results diverge, it helps diagnose whether the cause is an implementation difference, a hyperparameter mismatch, or a genuine replication failure. diff --git a/website/src/content/docs/workflows/review.md b/website/src/content/docs/workflows/review.md index cecf4af..f8ca26a 100644 --- a/website/src/content/docs/workflows/review.md +++ b/website/src/content/docs/workflows/review.md @@ -1,49 +1,52 @@ --- title: Peer Review -description: Simulated peer review with severity-graded feedback +description: Simulate a rigorous peer review with severity-graded feedback. section: Workflows order: 3 --- +The peer review workflow simulates a thorough academic peer review of a paper, draft, or research artifact. It produces severity-graded feedback with inline annotations, covering methodology, claims, writing quality, and reproducibility. + ## 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 +From the REPL: ``` -/review outputs/scaling-laws-brief.md +/review arxiv:2401.12345 ``` -## Output +``` +/review ~/papers/my-draft.pdf +``` -Structured review with: +From the CLI: -- Summary of the work -- Strengths -- Weaknesses (severity-graded) -- Questions for the authors -- Verdict (accept / revise / reject) -- Revision plan +```bash +feynman review arxiv:2401.12345 +feynman review my-draft.md +``` + +You can pass an arXiv ID, a URL, or a local file path. For arXiv papers, Feynman fetches the full PDF through AlphaXiv. + +## How it works + +The review workflow assigns the reviewer agent to read the document end-to-end and evaluate it against standard academic criteria. The reviewer examines the paper's claims, checks whether the methodology supports the conclusions, evaluates the experimental design for potential confounds, and assesses the clarity and completeness of the writing. + +Each piece of feedback is assigned a severity level: **critical** (fundamental issues that undermine the paper's validity), **major** (significant problems that should be addressed), **minor** (suggestions for improvement), or **nit** (stylistic or formatting issues). This grading helps you triage feedback and focus on what matters most. + +The reviewer also produces a summary assessment with an overall recommendation and a confidence score indicating how certain it is about each finding. When the reviewer identifies a claim that cannot be verified from the paper alone, it flags it as needing additional evidence. + +## Output format + +The review output includes: + +- **Summary Assessment** -- Overall evaluation and recommendation +- **Strengths** -- What the paper does well +- **Critical Issues** -- Fundamental problems that need to be addressed +- **Major Issues** -- Significant concerns with suggested fixes +- **Minor Issues** -- Smaller improvements and suggestions +- **Inline Annotations** -- Specific comments tied to sections of the document + +## Customization + +You can focus the review by specifying what to examine: "focus on the statistical methodology" or "check the claims in Section 4 against the experimental results." The reviewer adapts its analysis to your priorities while still performing a baseline check of the full document. diff --git a/website/src/content/docs/workflows/watch.md b/website/src/content/docs/workflows/watch.md index 3b78546..0749bf6 100644 --- a/website/src/content/docs/workflows/watch.md +++ b/website/src/content/docs/workflows/watch.md @@ -1,29 +1,54 @@ --- title: Watch -description: Recurring research monitoring +description: Set up recurring research monitoring on a topic. section: Workflows order: 9 --- +The watch workflow sets up recurring research monitoring that periodically checks for new papers, articles, and developments on a topic you care about. It notifies you when something relevant appears and can automatically summarize new findings. + ## 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 +From the REPL: ``` -/watch new papers on test-time compute scaling +/watch New developments in state space models for sequence modeling ``` +From the CLI: + +```bash +feynman watch "New developments in state space models for sequence modeling" +``` + +After setting up a watch, Feynman periodically runs searches on the topic and alerts you when it finds new relevant material. + ## 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 +The watch workflow is built on `pi-schedule-prompt`, which manages scheduled and recurring tasks. When you create a watch, Feynman stores the topic and search parameters, then runs a lightweight search at regular intervals (default: daily). + +Each check searches AlphaXiv for new papers and the web for new articles matching your topic. Results are compared against what was found in previous checks to surface only genuinely new material. When new items are found, Feynman produces a brief summary of each and stores it in your session history. + +The watch is smart about relevance. It does not just keyword-match -- it uses the same researcher agent that powers deep research to evaluate whether new papers are genuinely relevant to your topic or just superficially related. This keeps the signal-to-noise ratio high even for broad topics. + +## Managing watches + +List active watches: + +``` +/jobs +``` + +The `/jobs` command shows all active watches along with their schedule, last check time, and number of new items found. You can pause, resume, or delete watches from within the REPL. + +## Output format + +Each watch check produces: + +- **New Papers** -- Titles, authors, and one-paragraph summaries of newly discovered papers +- **New Articles** -- Relevant blog posts, documentation updates, or news articles +- **Relevance Notes** -- Why each item was flagged as relevant to your watch topic + +## When to use it + +Use `/watch` to stay current on a research area without manually searching every day. It is particularly useful for fast-moving fields where new papers appear frequently, for tracking specific research groups or topics related to your own work, and for monitoring the literature while you focus on other tasks. diff --git a/website/src/layouts/Base.astro b/website/src/layouts/Base.astro deleted file mode 100644 index ca81168..0000000 --- a/website/src/layouts/Base.astro +++ /dev/null @@ -1,61 +0,0 @@ ---- -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} - - - - - - - - -