@jokerized/getresearchdone 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +103 -0
- package/README.md +211 -0
- package/agents/grd-baseline-assessor.md +684 -0
- package/agents/grd-code-reviewer.md +300 -0
- package/agents/grd-codebase-mapper.md +355 -0
- package/agents/grd-critique-agent.md +119 -0
- package/agents/grd-debugger.md +519 -0
- package/agents/grd-deep-diver.md +737 -0
- package/agents/grd-eval-planner.md +913 -0
- package/agents/grd-eval-reporter.md +717 -0
- package/agents/grd-executor.md +683 -0
- package/agents/grd-feasibility-analyst.md +624 -0
- package/agents/grd-integration-checker.md +367 -0
- package/agents/grd-knowledge-miner.md +81 -0
- package/agents/grd-migrator.md +88 -0
- package/agents/grd-phase-researcher.md +697 -0
- package/agents/grd-plan-checker.md +443 -0
- package/agents/grd-planner.md +1532 -0
- package/agents/grd-product-owner.md +562 -0
- package/agents/grd-project-researcher.md +513 -0
- package/agents/grd-research-synthesizer.md +273 -0
- package/agents/grd-roadmapper.md +798 -0
- package/agents/grd-surveyor.md +566 -0
- package/agents/grd-verifier.md +893 -0
- package/bin/gd.js +4 -0
- package/bin/gd.ts +227 -0
- package/bin/grd-manifest.js +4 -0
- package/bin/grd-manifest.ts +286 -0
- package/bin/grd-mcp-server.js +4 -0
- package/bin/grd-mcp-server.ts +124 -0
- package/bin/grd-tools.js +4 -0
- package/bin/grd-tools.ts +2471 -0
- package/bin/postinstall.js +4 -0
- package/bin/postinstall.ts +80 -0
- package/commands/add-phase.md +123 -0
- package/commands/add-todo.md +87 -0
- package/commands/assess-baseline.md +289 -0
- package/commands/autopilot.md +100 -0
- package/commands/autoplan.md +55 -0
- package/commands/check-todos.md +87 -0
- package/commands/compare-methods.md +262 -0
- package/commands/complete-milestone.md +225 -0
- package/commands/debug.md +372 -0
- package/commands/deep-dive.md +288 -0
- package/commands/discover.md +281 -0
- package/commands/discuss-phase.md +188 -0
- package/commands/discuss.md +55 -0
- package/commands/eval-report.md +310 -0
- package/commands/evolve.md +79 -0
- package/commands/execute-phase.md +1017 -0
- package/commands/feasibility.md +292 -0
- package/commands/help.md +407 -0
- package/commands/init.md +1508 -0
- package/commands/insert-phase.md +113 -0
- package/commands/iterate.md +327 -0
- package/commands/list-phase-assumptions.md +217 -0
- package/commands/long-term-roadmap.md +202 -0
- package/commands/map-codebase.md +111 -0
- package/commands/migrate.md +159 -0
- package/commands/new-milestone.md +169 -0
- package/commands/pause-work.md +83 -0
- package/commands/plan-milestone-gaps.md +373 -0
- package/commands/plan-phase.md +655 -0
- package/commands/principles.md +328 -0
- package/commands/product-plan.md +319 -0
- package/commands/progress.md +481 -0
- package/commands/quick.md +167 -0
- package/commands/reapply-patches.md +154 -0
- package/commands/remove-phase.md +97 -0
- package/commands/requirement.md +96 -0
- package/commands/resume-project.md +113 -0
- package/commands/settings.md +1144 -0
- package/commands/survey.md +242 -0
- package/commands/sync.md +246 -0
- package/commands/tracker-setup.md +322 -0
- package/commands/update.md +202 -0
- package/commands/verify-phase.md +335 -0
- package/commands/verify-work.md +701 -0
- package/commands/wireup.md +29 -0
- package/dist/bin/gd.d.ts +3 -0
- package/dist/bin/gd.d.ts.map +1 -0
- package/dist/bin/gd.js +178 -0
- package/dist/bin/gd.js.map +1 -0
- package/dist/bin/grd-manifest.d.ts +3 -0
- package/dist/bin/grd-manifest.d.ts.map +1 -0
- package/dist/bin/grd-manifest.js +202 -0
- package/dist/bin/grd-manifest.js.map +1 -0
- package/dist/bin/grd-mcp-server.d.ts +3 -0
- package/dist/bin/grd-mcp-server.d.ts.map +1 -0
- package/dist/bin/grd-mcp-server.js +71 -0
- package/dist/bin/grd-mcp-server.js.map +1 -0
- package/dist/bin/grd-tools.d.ts +3 -0
- package/dist/bin/grd-tools.d.ts.map +1 -0
- package/dist/bin/grd-tools.js +1680 -0
- package/dist/bin/grd-tools.js.map +1 -0
- package/dist/bin/postinstall.d.ts +3 -0
- package/dist/bin/postinstall.d.ts.map +1 -0
- package/dist/bin/postinstall.js +61 -0
- package/dist/bin/postinstall.js.map +1 -0
- package/dist/lib/autopilot-milestone.d.ts +2 -0
- package/dist/lib/autopilot-milestone.d.ts.map +1 -0
- package/dist/lib/autopilot-milestone.js +94 -0
- package/dist/lib/autopilot-milestone.js.map +1 -0
- package/dist/lib/autopilot-pipeline.d.ts +2 -0
- package/dist/lib/autopilot-pipeline.d.ts.map +1 -0
- package/dist/lib/autopilot-pipeline.js +830 -0
- package/dist/lib/autopilot-pipeline.js.map +1 -0
- package/dist/lib/autopilot-waves.d.ts +2 -0
- package/dist/lib/autopilot-waves.d.ts.map +1 -0
- package/dist/lib/autopilot-waves.js +266 -0
- package/dist/lib/autopilot-waves.js.map +1 -0
- package/dist/lib/autopilot.d.ts +2 -0
- package/dist/lib/autopilot.d.ts.map +1 -0
- package/dist/lib/autopilot.js +1314 -0
- package/dist/lib/autopilot.js.map +1 -0
- package/dist/lib/autoplan.d.ts +2 -0
- package/dist/lib/autoplan.d.ts.map +1 -0
- package/dist/lib/autoplan.js +198 -0
- package/dist/lib/autoplan.js.map +1 -0
- package/dist/lib/autoresearch.d.ts +2 -0
- package/dist/lib/autoresearch.d.ts.map +1 -0
- package/dist/lib/autoresearch.js +626 -0
- package/dist/lib/autoresearch.js.map +1 -0
- package/dist/lib/backend.d.ts +2 -0
- package/dist/lib/backend.d.ts.map +1 -0
- package/dist/lib/backend.js +1036 -0
- package/dist/lib/backend.js.map +1 -0
- package/dist/lib/benchmark.d.ts +99 -0
- package/dist/lib/benchmark.d.ts.map +1 -0
- package/dist/lib/benchmark.js +278 -0
- package/dist/lib/benchmark.js.map +1 -0
- package/dist/lib/citations.d.ts +2 -0
- package/dist/lib/citations.d.ts.map +1 -0
- package/dist/lib/citations.js +642 -0
- package/dist/lib/citations.js.map +1 -0
- package/dist/lib/cleanup.d.ts +2 -0
- package/dist/lib/cleanup.d.ts.map +1 -0
- package/dist/lib/cleanup.js +1222 -0
- package/dist/lib/cleanup.js.map +1 -0
- package/dist/lib/cli/adapters.d.ts +10 -0
- package/dist/lib/cli/adapters.d.ts.map +1 -0
- package/dist/lib/cli/adapters.js +27 -0
- package/dist/lib/cli/adapters.js.map +1 -0
- package/dist/lib/cli/agent.d.ts +17 -0
- package/dist/lib/cli/agent.d.ts.map +1 -0
- package/dist/lib/cli/agent.js +53 -0
- package/dist/lib/cli/agent.js.map +1 -0
- package/dist/lib/cli/index.d.ts +21 -0
- package/dist/lib/cli/index.d.ts.map +1 -0
- package/dist/lib/cli/index.js +264 -0
- package/dist/lib/cli/index.js.map +1 -0
- package/dist/lib/cli/output.d.ts +20 -0
- package/dist/lib/cli/output.d.ts.map +1 -0
- package/dist/lib/cli/output.js +22 -0
- package/dist/lib/cli/output.js.map +1 -0
- package/dist/lib/cli/scan-dispatch.d.ts +9 -0
- package/dist/lib/cli/scan-dispatch.d.ts.map +1 -0
- package/dist/lib/cli/scan-dispatch.js +107 -0
- package/dist/lib/cli/scan-dispatch.js.map +1 -0
- package/dist/lib/cli/tools.d.ts +16 -0
- package/dist/lib/cli/tools.d.ts.map +1 -0
- package/dist/lib/cli/tools.js +168 -0
- package/dist/lib/cli/tools.js.map +1 -0
- package/dist/lib/commands/_dashboard-parsers.d.ts +2 -0
- package/dist/lib/commands/_dashboard-parsers.d.ts.map +1 -0
- package/dist/lib/commands/_dashboard-parsers.js +192 -0
- package/dist/lib/commands/_dashboard-parsers.js.map +1 -0
- package/dist/lib/commands/analysis.d.ts +2 -0
- package/dist/lib/commands/analysis.d.ts.map +1 -0
- package/dist/lib/commands/analysis.js +1418 -0
- package/dist/lib/commands/analysis.js.map +1 -0
- package/dist/lib/commands/assumptions.d.ts +2 -0
- package/dist/lib/commands/assumptions.d.ts.map +1 -0
- package/dist/lib/commands/assumptions.js +166 -0
- package/dist/lib/commands/assumptions.js.map +1 -0
- package/dist/lib/commands/blame.d.ts +2 -0
- package/dist/lib/commands/blame.d.ts.map +1 -0
- package/dist/lib/commands/blame.js +133 -0
- package/dist/lib/commands/blame.js.map +1 -0
- package/dist/lib/commands/budget.d.ts +2 -0
- package/dist/lib/commands/budget.d.ts.map +1 -0
- package/dist/lib/commands/budget.js +100 -0
- package/dist/lib/commands/budget.js.map +1 -0
- package/dist/lib/commands/check-plans.d.ts +2 -0
- package/dist/lib/commands/check-plans.d.ts.map +1 -0
- package/dist/lib/commands/check-plans.js +190 -0
- package/dist/lib/commands/check-plans.js.map +1 -0
- package/dist/lib/commands/config.d.ts +2 -0
- package/dist/lib/commands/config.d.ts.map +1 -0
- package/dist/lib/commands/config.js +188 -0
- package/dist/lib/commands/config.js.map +1 -0
- package/dist/lib/commands/dashboard.d.ts +2 -0
- package/dist/lib/commands/dashboard.d.ts.map +1 -0
- package/dist/lib/commands/dashboard.js +466 -0
- package/dist/lib/commands/dashboard.js.map +1 -0
- package/dist/lib/commands/estimate.d.ts +2 -0
- package/dist/lib/commands/estimate.d.ts.map +1 -0
- package/dist/lib/commands/estimate.js +148 -0
- package/dist/lib/commands/estimate.js.map +1 -0
- package/dist/lib/commands/eval-diff.d.ts +2 -0
- package/dist/lib/commands/eval-diff.d.ts.map +1 -0
- package/dist/lib/commands/eval-diff.js +213 -0
- package/dist/lib/commands/eval-diff.js.map +1 -0
- package/dist/lib/commands/freshness.d.ts +2 -0
- package/dist/lib/commands/freshness.d.ts.map +1 -0
- package/dist/lib/commands/freshness.js +163 -0
- package/dist/lib/commands/freshness.js.map +1 -0
- package/dist/lib/commands/health.d.ts +2 -0
- package/dist/lib/commands/health.d.ts.map +1 -0
- package/dist/lib/commands/health.js +435 -0
- package/dist/lib/commands/health.js.map +1 -0
- package/dist/lib/commands/index.d.ts +2 -0
- package/dist/lib/commands/index.d.ts.map +1 -0
- package/dist/lib/commands/index.js +128 -0
- package/dist/lib/commands/index.js.map +1 -0
- package/dist/lib/commands/install.d.ts +56 -0
- package/dist/lib/commands/install.d.ts.map +1 -0
- package/dist/lib/commands/install.js +214 -0
- package/dist/lib/commands/install.js.map +1 -0
- package/dist/lib/commands/knowhow-aggregator.d.ts +2 -0
- package/dist/lib/commands/knowhow-aggregator.d.ts.map +1 -0
- package/dist/lib/commands/knowhow-aggregator.js +279 -0
- package/dist/lib/commands/knowhow-aggregator.js.map +1 -0
- package/dist/lib/commands/knowledge-search.d.ts +2 -0
- package/dist/lib/commands/knowledge-search.d.ts.map +1 -0
- package/dist/lib/commands/knowledge-search.js +113 -0
- package/dist/lib/commands/knowledge-search.js.map +1 -0
- package/dist/lib/commands/long-term-roadmap.d.ts +2 -0
- package/dist/lib/commands/long-term-roadmap.d.ts.map +1 -0
- package/dist/lib/commands/long-term-roadmap.js +272 -0
- package/dist/lib/commands/long-term-roadmap.js.map +1 -0
- package/dist/lib/commands/patterns.d.ts +91 -0
- package/dist/lib/commands/patterns.d.ts.map +1 -0
- package/dist/lib/commands/patterns.js +391 -0
- package/dist/lib/commands/patterns.js.map +1 -0
- package/dist/lib/commands/phase-info.d.ts +2 -0
- package/dist/lib/commands/phase-info.d.ts.map +1 -0
- package/dist/lib/commands/phase-info.js +509 -0
- package/dist/lib/commands/phase-info.js.map +1 -0
- package/dist/lib/commands/plan-lint.d.ts +56 -0
- package/dist/lib/commands/plan-lint.d.ts.map +1 -0
- package/dist/lib/commands/plan-lint.js +481 -0
- package/dist/lib/commands/plan-lint.js.map +1 -0
- package/dist/lib/commands/plan-phase.d.ts +53 -0
- package/dist/lib/commands/plan-phase.d.ts.map +1 -0
- package/dist/lib/commands/plan-phase.js +288 -0
- package/dist/lib/commands/plan-phase.js.map +1 -0
- package/dist/lib/commands/progress.d.ts +2 -0
- package/dist/lib/commands/progress.d.ts.map +1 -0
- package/dist/lib/commands/progress.js +266 -0
- package/dist/lib/commands/progress.js.map +1 -0
- package/dist/lib/commands/quality.d.ts +2 -0
- package/dist/lib/commands/quality.d.ts.map +1 -0
- package/dist/lib/commands/quality.js +80 -0
- package/dist/lib/commands/quality.js.map +1 -0
- package/dist/lib/commands/rollback.d.ts +2 -0
- package/dist/lib/commands/rollback.d.ts.map +1 -0
- package/dist/lib/commands/rollback.js +145 -0
- package/dist/lib/commands/rollback.js.map +1 -0
- package/dist/lib/commands/scan.d.ts +25 -0
- package/dist/lib/commands/scan.d.ts.map +1 -0
- package/dist/lib/commands/scan.js +28 -0
- package/dist/lib/commands/scan.js.map +1 -0
- package/dist/lib/commands/search.d.ts +2 -0
- package/dist/lib/commands/search.d.ts.map +1 -0
- package/dist/lib/commands/search.js +212 -0
- package/dist/lib/commands/search.js.map +1 -0
- package/dist/lib/commands/select-candidate.d.ts +128 -0
- package/dist/lib/commands/select-candidate.d.ts.map +1 -0
- package/dist/lib/commands/select-candidate.js +518 -0
- package/dist/lib/commands/select-candidate.js.map +1 -0
- package/dist/lib/commands/singularity.d.ts +2 -0
- package/dist/lib/commands/singularity.d.ts.map +1 -0
- package/dist/lib/commands/singularity.js +185 -0
- package/dist/lib/commands/singularity.js.map +1 -0
- package/dist/lib/commands/slug-timestamp.d.ts +2 -0
- package/dist/lib/commands/slug-timestamp.d.ts.map +1 -0
- package/dist/lib/commands/slug-timestamp.js +54 -0
- package/dist/lib/commands/slug-timestamp.js.map +1 -0
- package/dist/lib/commands/tail.d.ts +2 -0
- package/dist/lib/commands/tail.d.ts.map +1 -0
- package/dist/lib/commands/tail.js +100 -0
- package/dist/lib/commands/tail.js.map +1 -0
- package/dist/lib/commands/todo.d.ts +2 -0
- package/dist/lib/commands/todo.d.ts.map +1 -0
- package/dist/lib/commands/todo.js +200 -0
- package/dist/lib/commands/todo.js.map +1 -0
- package/dist/lib/commands/watch.d.ts +2 -0
- package/dist/lib/commands/watch.d.ts.map +1 -0
- package/dist/lib/commands/watch.js +72 -0
- package/dist/lib/commands/watch.js.map +1 -0
- package/dist/lib/complexity.d.ts +55 -0
- package/dist/lib/complexity.d.ts.map +1 -0
- package/dist/lib/complexity.js +80 -0
- package/dist/lib/complexity.js.map +1 -0
- package/dist/lib/context/agents.d.ts +2 -0
- package/dist/lib/context/agents.d.ts.map +1 -0
- package/dist/lib/context/agents.js +344 -0
- package/dist/lib/context/agents.js.map +1 -0
- package/dist/lib/context/base.d.ts +2 -0
- package/dist/lib/context/base.d.ts.map +1 -0
- package/dist/lib/context/base.js +81 -0
- package/dist/lib/context/base.js.map +1 -0
- package/dist/lib/context/execute.d.ts +2 -0
- package/dist/lib/context/execute.d.ts.map +1 -0
- package/dist/lib/context/execute.js +753 -0
- package/dist/lib/context/execute.js.map +1 -0
- package/dist/lib/context/index.d.ts +2 -0
- package/dist/lib/context/index.d.ts.map +1 -0
- package/dist/lib/context/index.js +88 -0
- package/dist/lib/context/index.js.map +1 -0
- package/dist/lib/context/progress.d.ts +2 -0
- package/dist/lib/context/progress.d.ts.map +1 -0
- package/dist/lib/context/progress.js +178 -0
- package/dist/lib/context/progress.js.map +1 -0
- package/dist/lib/context/project.d.ts +2 -0
- package/dist/lib/context/project.d.ts.map +1 -0
- package/dist/lib/context/project.js +413 -0
- package/dist/lib/context/project.js.map +1 -0
- package/dist/lib/context/research.d.ts +2 -0
- package/dist/lib/context/research.d.ts.map +1 -0
- package/dist/lib/context/research.js +466 -0
- package/dist/lib/context/research.js.map +1 -0
- package/dist/lib/dead-ends.d.ts +28 -0
- package/dist/lib/dead-ends.d.ts.map +1 -0
- package/dist/lib/dead-ends.js +451 -0
- package/dist/lib/dead-ends.js.map +1 -0
- package/dist/lib/deps.d.ts +2 -0
- package/dist/lib/deps.d.ts.map +1 -0
- package/dist/lib/deps.js +630 -0
- package/dist/lib/deps.js.map +1 -0
- package/dist/lib/discussion.d.ts +2 -0
- package/dist/lib/discussion.d.ts.map +1 -0
- package/dist/lib/discussion.js +1041 -0
- package/dist/lib/discussion.js.map +1 -0
- package/dist/lib/drift.d.ts +36 -0
- package/dist/lib/drift.d.ts.map +1 -0
- package/dist/lib/drift.js +481 -0
- package/dist/lib/drift.js.map +1 -0
- package/dist/lib/evolve/_dimensions-features.d.ts +2 -0
- package/dist/lib/evolve/_dimensions-features.d.ts.map +1 -0
- package/dist/lib/evolve/_dimensions-features.js +369 -0
- package/dist/lib/evolve/_dimensions-features.js.map +1 -0
- package/dist/lib/evolve/_dimensions.d.ts +2 -0
- package/dist/lib/evolve/_dimensions.d.ts.map +1 -0
- package/dist/lib/evolve/_dimensions.js +358 -0
- package/dist/lib/evolve/_dimensions.js.map +1 -0
- package/dist/lib/evolve/_product-ideation.d.ts +2 -0
- package/dist/lib/evolve/_product-ideation.d.ts.map +1 -0
- package/dist/lib/evolve/_product-ideation.js +281 -0
- package/dist/lib/evolve/_product-ideation.js.map +1 -0
- package/dist/lib/evolve/_prompts.d.ts +2 -0
- package/dist/lib/evolve/_prompts.d.ts.map +1 -0
- package/dist/lib/evolve/_prompts.js +153 -0
- package/dist/lib/evolve/_prompts.js.map +1 -0
- package/dist/lib/evolve/cli.d.ts +2 -0
- package/dist/lib/evolve/cli.d.ts.map +1 -0
- package/dist/lib/evolve/cli.js +224 -0
- package/dist/lib/evolve/cli.js.map +1 -0
- package/dist/lib/evolve/discovery.d.ts +2 -0
- package/dist/lib/evolve/discovery.d.ts.map +1 -0
- package/dist/lib/evolve/discovery.js +391 -0
- package/dist/lib/evolve/discovery.js.map +1 -0
- package/dist/lib/evolve/index.d.ts +2 -0
- package/dist/lib/evolve/index.d.ts.map +1 -0
- package/dist/lib/evolve/index.js +88 -0
- package/dist/lib/evolve/index.js.map +1 -0
- package/dist/lib/evolve/orchestrator.d.ts +2 -0
- package/dist/lib/evolve/orchestrator.d.ts.map +1 -0
- package/dist/lib/evolve/orchestrator.js +851 -0
- package/dist/lib/evolve/orchestrator.js.map +1 -0
- package/dist/lib/evolve/scoring.d.ts +2 -0
- package/dist/lib/evolve/scoring.d.ts.map +1 -0
- package/dist/lib/evolve/scoring.js +118 -0
- package/dist/lib/evolve/scoring.js.map +1 -0
- package/dist/lib/evolve/state.d.ts +2 -0
- package/dist/lib/evolve/state.d.ts.map +1 -0
- package/dist/lib/evolve/state.js +264 -0
- package/dist/lib/evolve/state.js.map +1 -0
- package/dist/lib/evolve/types.d.ts +249 -0
- package/dist/lib/evolve/types.d.ts.map +1 -0
- package/dist/lib/evolve/types.js +3 -0
- package/dist/lib/evolve/types.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +2 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +513 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/gates.d.ts +2 -0
- package/dist/lib/gates.d.ts.map +1 -0
- package/dist/lib/gates.js +578 -0
- package/dist/lib/gates.js.map +1 -0
- package/dist/lib/genome.d.ts +10 -0
- package/dist/lib/genome.d.ts.map +1 -0
- package/dist/lib/genome.js +368 -0
- package/dist/lib/genome.js.map +1 -0
- package/dist/lib/got.d.ts +2 -0
- package/dist/lib/got.d.ts.map +1 -0
- package/dist/lib/got.js +280 -0
- package/dist/lib/got.js.map +1 -0
- package/dist/lib/invariants.d.ts +2 -0
- package/dist/lib/invariants.d.ts.map +1 -0
- package/dist/lib/invariants.js +298 -0
- package/dist/lib/invariants.js.map +1 -0
- package/dist/lib/knowledge.d.ts +2 -0
- package/dist/lib/knowledge.d.ts.map +1 -0
- package/dist/lib/knowledge.js +658 -0
- package/dist/lib/knowledge.js.map +1 -0
- package/dist/lib/long-term-roadmap.d.ts +2 -0
- package/dist/lib/long-term-roadmap.d.ts.map +1 -0
- package/dist/lib/long-term-roadmap.js +602 -0
- package/dist/lib/long-term-roadmap.js.map +1 -0
- package/dist/lib/markdown-split.d.ts +2 -0
- package/dist/lib/markdown-split.d.ts.map +1 -0
- package/dist/lib/markdown-split.js +199 -0
- package/dist/lib/markdown-split.js.map +1 -0
- package/dist/lib/mcp-server.d.ts +2 -0
- package/dist/lib/mcp-server.d.ts.map +1 -0
- package/dist/lib/mcp-server.js +2424 -0
- package/dist/lib/mcp-server.js.map +1 -0
- package/dist/lib/metrics.d.ts +16 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +48 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/overstory.d.ts +2 -0
- package/dist/lib/overstory.d.ts.map +1 -0
- package/dist/lib/overstory.js +211 -0
- package/dist/lib/overstory.js.map +1 -0
- package/dist/lib/parallel.d.ts +2 -0
- package/dist/lib/parallel.d.ts.map +1 -0
- package/dist/lib/parallel.js +349 -0
- package/dist/lib/parallel.js.map +1 -0
- package/dist/lib/paths.d.ts +2 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +254 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/phase-complete-llm.d.ts +22 -0
- package/dist/lib/phase-complete-llm.d.ts.map +1 -0
- package/dist/lib/phase-complete-llm.js +331 -0
- package/dist/lib/phase-complete-llm.js.map +1 -0
- package/dist/lib/phase-complete.d.ts +46 -0
- package/dist/lib/phase-complete.d.ts.map +1 -0
- package/dist/lib/phase-complete.js +278 -0
- package/dist/lib/phase-complete.js.map +1 -0
- package/dist/lib/phase-io.d.ts +2 -0
- package/dist/lib/phase-io.d.ts.map +1 -0
- package/dist/lib/phase-io.js +126 -0
- package/dist/lib/phase-io.js.map +1 -0
- package/dist/lib/phase.d.ts +2 -0
- package/dist/lib/phase.d.ts.map +1 -0
- package/dist/lib/phase.js +1344 -0
- package/dist/lib/phase.js.map +1 -0
- package/dist/lib/plan-tournament.d.ts +63 -0
- package/dist/lib/plan-tournament.d.ts.map +1 -0
- package/dist/lib/plan-tournament.js +353 -0
- package/dist/lib/plan-tournament.js.map +1 -0
- package/dist/lib/refinement.d.ts +74 -0
- package/dist/lib/refinement.d.ts.map +1 -0
- package/dist/lib/refinement.js +283 -0
- package/dist/lib/refinement.js.map +1 -0
- package/dist/lib/requirements.d.ts +2 -0
- package/dist/lib/requirements.d.ts.map +1 -0
- package/dist/lib/requirements.js +355 -0
- package/dist/lib/requirements.js.map +1 -0
- package/dist/lib/research-bundle.d.ts +2 -0
- package/dist/lib/research-bundle.d.ts.map +1 -0
- package/dist/lib/research-bundle.js +246 -0
- package/dist/lib/research-bundle.js.map +1 -0
- package/dist/lib/roadmap.d.ts +2 -0
- package/dist/lib/roadmap.d.ts.map +1 -0
- package/dist/lib/roadmap.js +541 -0
- package/dist/lib/roadmap.js.map +1 -0
- package/dist/lib/sample.d.ts +16 -0
- package/dist/lib/sample.d.ts.map +1 -0
- package/dist/lib/sample.js +20 -0
- package/dist/lib/sample.js.map +1 -0
- package/dist/lib/scaffold.d.ts +2 -0
- package/dist/lib/scaffold.d.ts.map +1 -0
- package/dist/lib/scaffold.js +355 -0
- package/dist/lib/scaffold.js.map +1 -0
- package/dist/lib/scan/_utils.d.ts +11 -0
- package/dist/lib/scan/_utils.d.ts.map +1 -0
- package/dist/lib/scan/_utils.js +36 -0
- package/dist/lib/scan/_utils.js.map +1 -0
- package/dist/lib/scan/base64.d.ts +15 -0
- package/dist/lib/scan/base64.d.ts.map +1 -0
- package/dist/lib/scan/base64.js +66 -0
- package/dist/lib/scan/base64.js.map +1 -0
- package/dist/lib/scan/ignorefile.d.ts +30 -0
- package/dist/lib/scan/ignorefile.d.ts.map +1 -0
- package/dist/lib/scan/ignorefile.js +101 -0
- package/dist/lib/scan/ignorefile.js.map +1 -0
- package/dist/lib/scan/injection.d.ts +14 -0
- package/dist/lib/scan/injection.d.ts.map +1 -0
- package/dist/lib/scan/injection.js +39 -0
- package/dist/lib/scan/injection.js.map +1 -0
- package/dist/lib/scan/patterns.d.ts +17 -0
- package/dist/lib/scan/patterns.d.ts.map +1 -0
- package/dist/lib/scan/patterns.js +123 -0
- package/dist/lib/scan/patterns.js.map +1 -0
- package/dist/lib/scan/strip-markdown.d.ts +7 -0
- package/dist/lib/scan/strip-markdown.d.ts.map +1 -0
- package/dist/lib/scan/strip-markdown.js +38 -0
- package/dist/lib/scan/strip-markdown.js.map +1 -0
- package/dist/lib/scan/types.d.ts +23 -0
- package/dist/lib/scan/types.d.ts.map +1 -0
- package/dist/lib/scan/types.js +3 -0
- package/dist/lib/scan/types.js.map +1 -0
- package/dist/lib/scheduler-wait.d.ts +2 -0
- package/dist/lib/scheduler-wait.d.ts.map +1 -0
- package/dist/lib/scheduler-wait.js +59 -0
- package/dist/lib/scheduler-wait.js.map +1 -0
- package/dist/lib/scheduler.d.ts +254 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +1147 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/dist/lib/state.d.ts +2 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +744 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/think.d.ts +18 -0
- package/dist/lib/think.d.ts.map +1 -0
- package/dist/lib/think.js +317 -0
- package/dist/lib/think.js.map +1 -0
- package/dist/lib/tracker.d.ts +2 -0
- package/dist/lib/tracker.d.ts.map +1 -0
- package/dist/lib/tracker.js +1121 -0
- package/dist/lib/tracker.js.map +1 -0
- package/dist/lib/types.d.ts +1514 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +4 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/utils.d.ts +2 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +1363 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/lib/verify.d.ts +2 -0
- package/dist/lib/verify.d.ts.map +1 -0
- package/dist/lib/verify.js +1153 -0
- package/dist/lib/verify.js.map +1 -0
- package/dist/lib/wireup/autofix.d.ts +2 -0
- package/dist/lib/wireup/autofix.d.ts.map +1 -0
- package/dist/lib/wireup/autofix.js +188 -0
- package/dist/lib/wireup/autofix.js.map +1 -0
- package/dist/lib/wireup/cli.d.ts +2 -0
- package/dist/lib/wireup/cli.d.ts.map +1 -0
- package/dist/lib/wireup/cli.js +194 -0
- package/dist/lib/wireup/cli.js.map +1 -0
- package/dist/lib/wireup/detection.d.ts +47 -0
- package/dist/lib/wireup/detection.d.ts.map +1 -0
- package/dist/lib/wireup/detection.js +410 -0
- package/dist/lib/wireup/detection.js.map +1 -0
- package/dist/lib/wireup/discovery.d.ts +2 -0
- package/dist/lib/wireup/discovery.d.ts.map +1 -0
- package/dist/lib/wireup/discovery.js +934 -0
- package/dist/lib/wireup/discovery.js.map +1 -0
- package/dist/lib/wireup/execution.d.ts +2 -0
- package/dist/lib/wireup/execution.d.ts.map +1 -0
- package/dist/lib/wireup/execution.js +573 -0
- package/dist/lib/wireup/execution.js.map +1 -0
- package/dist/lib/wireup/index.d.ts +2 -0
- package/dist/lib/wireup/index.d.ts.map +1 -0
- package/dist/lib/wireup/index.js +85 -0
- package/dist/lib/wireup/index.js.map +1 -0
- package/dist/lib/wireup/orchestrator.d.ts +2 -0
- package/dist/lib/wireup/orchestrator.d.ts.map +1 -0
- package/dist/lib/wireup/orchestrator.js +366 -0
- package/dist/lib/wireup/orchestrator.js.map +1 -0
- package/dist/lib/wireup/report.d.ts +47 -0
- package/dist/lib/wireup/report.d.ts.map +1 -0
- package/dist/lib/wireup/report.js +201 -0
- package/dist/lib/wireup/report.js.map +1 -0
- package/dist/lib/wireup/scenarios.d.ts +2 -0
- package/dist/lib/wireup/scenarios.d.ts.map +1 -0
- package/dist/lib/wireup/scenarios.js +516 -0
- package/dist/lib/wireup/scenarios.js.map +1 -0
- package/dist/lib/wireup/state.d.ts +2 -0
- package/dist/lib/wireup/state.d.ts.map +1 -0
- package/dist/lib/wireup/state.js +102 -0
- package/dist/lib/wireup/state.js.map +1 -0
- package/dist/lib/wireup/types.d.ts +376 -0
- package/dist/lib/wireup/types.d.ts.map +1 -0
- package/dist/lib/wireup/types.js +3 -0
- package/dist/lib/wireup/types.js.map +1 -0
- package/dist/lib/worktree.d.ts +2 -0
- package/dist/lib/worktree.d.ts.map +1 -0
- package/dist/lib/worktree.js +999 -0
- package/dist/lib/worktree.js.map +1 -0
- package/lib/autopilot-milestone.ts +136 -0
- package/lib/autopilot-pipeline.ts +1179 -0
- package/lib/autopilot-waves.ts +361 -0
- package/lib/autopilot.ts +1874 -0
- package/lib/autoplan.ts +280 -0
- package/lib/autoresearch.js +4 -0
- package/lib/autoresearch.ts +886 -0
- package/lib/backend.ts +1252 -0
- package/lib/benchmark.ts +341 -0
- package/lib/citations.ts +760 -0
- package/lib/cleanup.ts +1588 -0
- package/lib/cli/adapters.ts +41 -0
- package/lib/cli/agent.ts +83 -0
- package/lib/cli/index.ts +273 -0
- package/lib/cli/output.ts +33 -0
- package/lib/cli/scan-dispatch.ts +130 -0
- package/lib/cli/tools.ts +198 -0
- package/lib/commands/_dashboard-parsers.ts +275 -0
- package/lib/commands/analysis.ts +1851 -0
- package/lib/commands/assumptions.ts +232 -0
- package/lib/commands/blame.ts +174 -0
- package/lib/commands/budget.ts +148 -0
- package/lib/commands/check-plans.ts +233 -0
- package/lib/commands/config.ts +287 -0
- package/lib/commands/dashboard.ts +680 -0
- package/lib/commands/estimate.ts +204 -0
- package/lib/commands/eval-diff.ts +252 -0
- package/lib/commands/freshness.ts +213 -0
- package/lib/commands/health.ts +607 -0
- package/lib/commands/index.ts +266 -0
- package/lib/commands/install.ts +307 -0
- package/lib/commands/knowhow-aggregator.ts +345 -0
- package/lib/commands/knowledge-search.ts +153 -0
- package/lib/commands/long-term-roadmap.ts +390 -0
- package/lib/commands/patterns.ts +465 -0
- package/lib/commands/phase-info.ts +698 -0
- package/lib/commands/plan-lint.ts +546 -0
- package/lib/commands/plan-phase.ts +375 -0
- package/lib/commands/progress.ts +319 -0
- package/lib/commands/quality.ts +138 -0
- package/lib/commands/rollback.ts +195 -0
- package/lib/commands/scan.ts +72 -0
- package/lib/commands/search.ts +300 -0
- package/lib/commands/select-candidate.ts +687 -0
- package/lib/commands/singularity.ts +222 -0
- package/lib/commands/slug-timestamp.ts +74 -0
- package/lib/commands/tail.ts +129 -0
- package/lib/commands/todo.ts +273 -0
- package/lib/commands/watch.ts +80 -0
- package/lib/complexity.ts +117 -0
- package/lib/context/agents.ts +505 -0
- package/lib/context/base.ts +123 -0
- package/lib/context/execute.ts +977 -0
- package/lib/context/index.ts +110 -0
- package/lib/context/progress.ts +278 -0
- package/lib/context/project.ts +531 -0
- package/lib/context/research.ts +646 -0
- package/lib/dead-ends.ts +506 -0
- package/lib/deps.ts +773 -0
- package/lib/discussion.ts +1275 -0
- package/lib/drift.ts +519 -0
- package/lib/evolve/_dimensions-features.ts +525 -0
- package/lib/evolve/_dimensions.ts +511 -0
- package/lib/evolve/_product-ideation.ts +405 -0
- package/lib/evolve/_prompts.ts +178 -0
- package/lib/evolve/cli.ts +330 -0
- package/lib/evolve/discovery.ts +571 -0
- package/lib/evolve/index.ts +105 -0
- package/lib/evolve/orchestrator.ts +1139 -0
- package/lib/evolve/scoring.ts +167 -0
- package/lib/evolve/state.ts +330 -0
- package/lib/evolve/types.ts +290 -0
- package/lib/frontmatter.ts +615 -0
- package/lib/gates.ts +695 -0
- package/lib/genome.ts +402 -0
- package/lib/got.js +4 -0
- package/lib/got.ts +361 -0
- package/lib/invariants.ts +378 -0
- package/lib/knowledge.ts +768 -0
- package/lib/long-term-roadmap.ts +806 -0
- package/lib/markdown-split.ts +273 -0
- package/lib/mcp-server.ts +3292 -0
- package/lib/metrics.ts +49 -0
- package/lib/overstory.ts +270 -0
- package/lib/parallel.ts +570 -0
- package/lib/paths.ts +293 -0
- package/lib/phase-complete-llm.ts +376 -0
- package/lib/phase-complete.ts +366 -0
- package/lib/phase-io.ts +101 -0
- package/lib/phase.ts +1981 -0
- package/lib/plan-tournament.ts +426 -0
- package/lib/refinement.ts +349 -0
- package/lib/requirements.ts +469 -0
- package/lib/research-bundle.ts +300 -0
- package/lib/roadmap.ts +775 -0
- package/lib/scaffold.ts +480 -0
- package/lib/scan/_utils.ts +37 -0
- package/lib/scan/base64.ts +90 -0
- package/lib/scan/ignorefile.ts +109 -0
- package/lib/scan/injection.ts +67 -0
- package/lib/scan/patterns.ts +139 -0
- package/lib/scan/strip-markdown.ts +39 -0
- package/lib/scan/types.ts +28 -0
- package/lib/scheduler-wait.ts +58 -0
- package/lib/scheduler.ts +1370 -0
- package/lib/state.ts +1000 -0
- package/lib/think.ts +365 -0
- package/lib/tracker.ts +1591 -0
- package/lib/types.ts +1663 -0
- package/lib/utils.ts +1479 -0
- package/lib/verify.ts +1434 -0
- package/lib/wireup/autofix.ts +241 -0
- package/lib/wireup/cli.ts +278 -0
- package/lib/wireup/detection.ts +542 -0
- package/lib/wireup/discovery.ts +1063 -0
- package/lib/wireup/execution.ts +686 -0
- package/lib/wireup/index.ts +117 -0
- package/lib/wireup/orchestrator.ts +519 -0
- package/lib/wireup/report.ts +286 -0
- package/lib/wireup/scenarios.ts +616 -0
- package/lib/wireup/state.ts +139 -0
- package/lib/wireup/types.ts +436 -0
- package/lib/worktree.ts +1309 -0
- package/package.json +67 -0
|
@@ -0,0 +1,642 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fs = require('fs');
|
|
4
|
+
const path = require('path');
|
|
5
|
+
const { safeReadFile } = require('./utils');
|
|
6
|
+
// --- Helpers ------------------------------------------------------------------
|
|
7
|
+
/**
|
|
8
|
+
* Extract the content of a named section from markdown.
|
|
9
|
+
* Returns the text after `## Section Name` until the next `##` heading or end of file.
|
|
10
|
+
* The sectionName may be a regex pattern (e.g., 'missing.?components').
|
|
11
|
+
*/
|
|
12
|
+
function extractSection(content, sectionName) {
|
|
13
|
+
const pattern = new RegExp(`(?:^|\\n)#{2,3}\\s+${sectionName}[^\\n]*\\n([\\s\\S]*?)(?=\\n#{2,3}\\s|$)`, 'i');
|
|
14
|
+
const match = content.match(pattern);
|
|
15
|
+
return match ? match[1].trim() : '';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Parse a yes/no/true/false string into a boolean.
|
|
19
|
+
*/
|
|
20
|
+
function parseBool(value) {
|
|
21
|
+
const lower = value.trim().toLowerCase();
|
|
22
|
+
return lower === 'yes' || lower === 'true';
|
|
23
|
+
}
|
|
24
|
+
// --- parseMissingComponents ---------------------------------------------------
|
|
25
|
+
/**
|
|
26
|
+
* Parse missing_components section from PAPERS.md content.
|
|
27
|
+
*
|
|
28
|
+
* Supports two formats:
|
|
29
|
+
* Table: | Name | Source Paper | Description | Code Available |
|
|
30
|
+
* List: - **Name**: description (source: paper, code: yes/no)
|
|
31
|
+
*
|
|
32
|
+
* Also supports the plan-specified structured list format:
|
|
33
|
+
* - **name:** ComponentName
|
|
34
|
+
* - source_paper: paper-slug-or-title
|
|
35
|
+
* - description: What the component does
|
|
36
|
+
* - code_available: true|false
|
|
37
|
+
*
|
|
38
|
+
* Returns empty array if no section found or no entries parsed.
|
|
39
|
+
*
|
|
40
|
+
* @param content - Raw markdown content of a PAPERS.md entry
|
|
41
|
+
* @returns Array of MissingComponent objects
|
|
42
|
+
*/
|
|
43
|
+
function parseMissingComponents(content) {
|
|
44
|
+
const section = extractSection(content, 'missing.?components');
|
|
45
|
+
if (!section)
|
|
46
|
+
return [];
|
|
47
|
+
const results = [];
|
|
48
|
+
// Table format: | Name | Source Paper | Description | Code Available |
|
|
49
|
+
// Skip header row and separator row (contains ---)
|
|
50
|
+
const tableRowPattern = /^\|([^|]+)\|([^|]+)\|([^|]+)\|([^|]+)\|/gm;
|
|
51
|
+
let tableMatch;
|
|
52
|
+
let hasTableRows = false;
|
|
53
|
+
while ((tableMatch = tableRowPattern.exec(section)) !== null) {
|
|
54
|
+
const name = tableMatch[1].trim();
|
|
55
|
+
const sourcePaper = tableMatch[2].trim();
|
|
56
|
+
const description = tableMatch[3].trim();
|
|
57
|
+
const codeAvailableStr = tableMatch[4].trim();
|
|
58
|
+
// Skip header/separator rows
|
|
59
|
+
if (name.toLowerCase() === 'name' || /^[-\s]+$/.test(name))
|
|
60
|
+
continue;
|
|
61
|
+
hasTableRows = true;
|
|
62
|
+
results.push({
|
|
63
|
+
name,
|
|
64
|
+
source_paper: sourcePaper,
|
|
65
|
+
description,
|
|
66
|
+
code_available: parseBool(codeAvailableStr),
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (hasTableRows)
|
|
70
|
+
return results;
|
|
71
|
+
// Structured list format:
|
|
72
|
+
// - **name:** ComponentName
|
|
73
|
+
// - source_paper: paper-slug
|
|
74
|
+
// - description: text
|
|
75
|
+
// - code_available: true/false
|
|
76
|
+
const structuredBlockPattern = /^-\s+\*\*name:\*\*\s+(.+)\n(?:\s+-\s+source_paper:\s+(.+)\n)?(?:\s+-\s+description:\s+(.+)\n)?(?:\s+-\s+code_available:\s+(.+))?/gim;
|
|
77
|
+
let structuredMatch;
|
|
78
|
+
let hasStructured = false;
|
|
79
|
+
while ((structuredMatch = structuredBlockPattern.exec(section)) !== null) {
|
|
80
|
+
hasStructured = true;
|
|
81
|
+
results.push({
|
|
82
|
+
name: structuredMatch[1].trim(),
|
|
83
|
+
source_paper: structuredMatch[2] ? structuredMatch[2].trim() : '',
|
|
84
|
+
description: structuredMatch[3] ? structuredMatch[3].trim() : '',
|
|
85
|
+
code_available: structuredMatch[4] ? parseBool(structuredMatch[4]) : false,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
if (hasStructured)
|
|
89
|
+
return results;
|
|
90
|
+
// Inline list format: - **Name**: description (source: paper, code: yes/no)
|
|
91
|
+
const listPattern = /^-\s+\*\*([^*]+)\*\*\s*:\s*([^(]+)\(source:\s*([^,]+),\s*code:\s*([^)]+)\)/gm;
|
|
92
|
+
let listMatch;
|
|
93
|
+
while ((listMatch = listPattern.exec(section)) !== null) {
|
|
94
|
+
results.push({
|
|
95
|
+
name: listMatch[1].trim(),
|
|
96
|
+
source_paper: listMatch[3].trim(),
|
|
97
|
+
description: listMatch[2].trim(),
|
|
98
|
+
code_available: parseBool(listMatch[4]),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
return results;
|
|
102
|
+
}
|
|
103
|
+
// --- parseBorrowedComponents --------------------------------------------------
|
|
104
|
+
/**
|
|
105
|
+
* Parse borrowed_components section from PAPERS.md content.
|
|
106
|
+
*
|
|
107
|
+
* Supports two formats:
|
|
108
|
+
* Table: | Name | Source Paper | Description |
|
|
109
|
+
* List: - **Name**: description (source: paper)
|
|
110
|
+
*
|
|
111
|
+
* The code_available field is not relevant for borrowed components.
|
|
112
|
+
* Returns empty array if no section found or no entries parsed.
|
|
113
|
+
*
|
|
114
|
+
* @param content - Raw markdown content of a PAPERS.md entry
|
|
115
|
+
* @returns Array of BorrowedComponent objects
|
|
116
|
+
*/
|
|
117
|
+
function parseBorrowedComponents(content) {
|
|
118
|
+
const section = extractSection(content, 'borrowed.?components');
|
|
119
|
+
if (!section)
|
|
120
|
+
return [];
|
|
121
|
+
const results = [];
|
|
122
|
+
// Table format: | Name | Source Paper | Description |
|
|
123
|
+
const tableRowPattern = /^\|([^|]+)\|([^|]+)\|([^|]+)\|/gm;
|
|
124
|
+
let tableMatch;
|
|
125
|
+
let hasTableRows = false;
|
|
126
|
+
while ((tableMatch = tableRowPattern.exec(section)) !== null) {
|
|
127
|
+
const name = tableMatch[1].trim();
|
|
128
|
+
const sourcePaper = tableMatch[2].trim();
|
|
129
|
+
const description = tableMatch[3].trim();
|
|
130
|
+
if (name.toLowerCase() === 'name' || /^[-\s]+$/.test(name))
|
|
131
|
+
continue;
|
|
132
|
+
hasTableRows = true;
|
|
133
|
+
results.push({ name, source_paper: sourcePaper, description });
|
|
134
|
+
}
|
|
135
|
+
if (hasTableRows)
|
|
136
|
+
return results;
|
|
137
|
+
// Structured list format:
|
|
138
|
+
// - **name:** ComponentName
|
|
139
|
+
// - source_paper: paper-slug
|
|
140
|
+
// - description: text
|
|
141
|
+
const structuredBlockPattern = /^-\s+\*\*name:\*\*\s+(.+)\n(?:\s+-\s+source_paper:\s+(.+)\n)?(?:\s+-\s+description:\s+(.+))?/gim;
|
|
142
|
+
let structuredMatch;
|
|
143
|
+
let hasStructured = false;
|
|
144
|
+
while ((structuredMatch = structuredBlockPattern.exec(section)) !== null) {
|
|
145
|
+
hasStructured = true;
|
|
146
|
+
results.push({
|
|
147
|
+
name: structuredMatch[1].trim(),
|
|
148
|
+
source_paper: structuredMatch[2] ? structuredMatch[2].trim() : '',
|
|
149
|
+
description: structuredMatch[3] ? structuredMatch[3].trim() : '',
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (hasStructured)
|
|
153
|
+
return results;
|
|
154
|
+
// Inline list format: - **Name**: description (source: paper)
|
|
155
|
+
const listPattern = /^-\s+\*\*([^*]+)\*\*\s*:\s*([^(]+)\(source:\s*([^,)]+)[^)]*\)/gm;
|
|
156
|
+
let listMatch;
|
|
157
|
+
while ((listMatch = listPattern.exec(section)) !== null) {
|
|
158
|
+
results.push({
|
|
159
|
+
name: listMatch[1].trim(),
|
|
160
|
+
source_paper: listMatch[3].trim(),
|
|
161
|
+
description: listMatch[2].trim(),
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
return results;
|
|
165
|
+
}
|
|
166
|
+
// --- buildCitationGraph -------------------------------------------------------
|
|
167
|
+
/**
|
|
168
|
+
* Read all .md files in papersDir and build a typed CitationGraph.
|
|
169
|
+
*
|
|
170
|
+
* For each file:
|
|
171
|
+
* - Extracts the paper slug from the filename (without .md extension)
|
|
172
|
+
* - Parses missing_components and borrowed_components sections
|
|
173
|
+
* - Creates CitationNode entries for the paper itself and all referenced papers
|
|
174
|
+
* - Creates CitationEdge entries for each dependency relationship
|
|
175
|
+
* - Writes per-paper JSON to {papersDir}/../citations/{paper-slug}.json
|
|
176
|
+
*
|
|
177
|
+
* Priority escalation: MissingComponent with code_available=false => dep node priority='critical'
|
|
178
|
+
* All nodes start with resolved=false.
|
|
179
|
+
* Returns a graph with empty arrays when the directory is empty or missing.
|
|
180
|
+
*
|
|
181
|
+
* @param papersDir - Absolute or relative path to directory containing .md files
|
|
182
|
+
* @returns CitationGraph with nodes, edges, and built_at ISO timestamp
|
|
183
|
+
*/
|
|
184
|
+
function buildCitationGraph(papersDir) {
|
|
185
|
+
const built_at = new Date().toISOString();
|
|
186
|
+
// Handle missing or non-directory paths gracefully
|
|
187
|
+
if (!fs.existsSync(papersDir)) {
|
|
188
|
+
return { nodes: [], edges: [], built_at };
|
|
189
|
+
}
|
|
190
|
+
let files;
|
|
191
|
+
try {
|
|
192
|
+
const entries = fs.readdirSync(papersDir);
|
|
193
|
+
files = entries.filter((f) => f.endsWith('.md'));
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
return { nodes: [], edges: [], built_at };
|
|
197
|
+
}
|
|
198
|
+
if (files.length === 0) {
|
|
199
|
+
return { nodes: [], edges: [], built_at };
|
|
200
|
+
}
|
|
201
|
+
// Track nodes by slug to avoid duplicates; edges are collected in order
|
|
202
|
+
const nodeMap = new Map();
|
|
203
|
+
const edges = [];
|
|
204
|
+
/**
|
|
205
|
+
* Ensure a node exists for slug. Escalates priority to 'critical' if needed.
|
|
206
|
+
* Merges component arrays for the primary paper node.
|
|
207
|
+
*/
|
|
208
|
+
function ensureNode(slug, priority = 'normal', missing = [], borrowed = []) {
|
|
209
|
+
if (!nodeMap.has(slug)) {
|
|
210
|
+
nodeMap.set(slug, {
|
|
211
|
+
slug,
|
|
212
|
+
title: slug,
|
|
213
|
+
resolved: false,
|
|
214
|
+
priority,
|
|
215
|
+
technique_summary: '',
|
|
216
|
+
missing_components: missing,
|
|
217
|
+
borrowed_components: borrowed,
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
const existing = nodeMap.get(slug);
|
|
222
|
+
if (priority === 'critical') {
|
|
223
|
+
existing.priority = 'critical';
|
|
224
|
+
}
|
|
225
|
+
// Merge component arrays when the primary paper node is registered
|
|
226
|
+
if (missing.length > 0)
|
|
227
|
+
existing.missing_components = missing;
|
|
228
|
+
if (borrowed.length > 0)
|
|
229
|
+
existing.borrowed_components = borrowed;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
for (const file of files) {
|
|
233
|
+
const slug = path.basename(file, '.md');
|
|
234
|
+
const filePath = path.join(papersDir, file);
|
|
235
|
+
// Use safeReadFile for reading; fall back to empty string on null
|
|
236
|
+
const raw = safeReadFile(filePath);
|
|
237
|
+
const content = raw !== null ? raw : '';
|
|
238
|
+
const missing = parseMissingComponents(content);
|
|
239
|
+
const borrowed = parseBorrowedComponents(content);
|
|
240
|
+
ensureNode(slug, 'normal', missing, borrowed);
|
|
241
|
+
for (const component of missing) {
|
|
242
|
+
const depSlug = component.source_paper;
|
|
243
|
+
const depPriority = component.code_available ? 'normal' : 'critical';
|
|
244
|
+
ensureNode(depSlug, depPriority);
|
|
245
|
+
edges.push({
|
|
246
|
+
from_slug: slug,
|
|
247
|
+
to_slug: depSlug,
|
|
248
|
+
type: 'missing',
|
|
249
|
+
component_name: component.name,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
for (const component of borrowed) {
|
|
253
|
+
const depSlug = component.source_paper;
|
|
254
|
+
ensureNode(depSlug, 'normal');
|
|
255
|
+
edges.push({
|
|
256
|
+
from_slug: slug,
|
|
257
|
+
to_slug: depSlug,
|
|
258
|
+
type: 'borrowed',
|
|
259
|
+
component_name: component.name,
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
const graph = {
|
|
264
|
+
nodes: Array.from(nodeMap.values()),
|
|
265
|
+
edges,
|
|
266
|
+
built_at,
|
|
267
|
+
};
|
|
268
|
+
// Write per-paper JSON to {papersDir}/../citations/{paper-slug}.json
|
|
269
|
+
const citationsDir = path.join(papersDir, '..', 'citations');
|
|
270
|
+
try {
|
|
271
|
+
fs.mkdirSync(citationsDir, { recursive: true });
|
|
272
|
+
for (const node of graph.nodes) {
|
|
273
|
+
const jsonPath = path.join(citationsDir, `${node.slug}.json`);
|
|
274
|
+
fs.writeFileSync(jsonPath, JSON.stringify(node, null, 2), 'utf-8');
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
catch {
|
|
278
|
+
// Non-fatal: if we cannot write JSON, still return the complete graph
|
|
279
|
+
}
|
|
280
|
+
return graph;
|
|
281
|
+
}
|
|
282
|
+
// --- resolveCitations ---------------------------------------------------------
|
|
283
|
+
/**
|
|
284
|
+
* Default fetch function using Node's built-in https module.
|
|
285
|
+
* Returns the response body as a string, or null on any error.
|
|
286
|
+
*/
|
|
287
|
+
function defaultFetchFn(url, _timeoutMs) {
|
|
288
|
+
return new Promise((resolve) => {
|
|
289
|
+
const https = require('https');
|
|
290
|
+
const http = require('http');
|
|
291
|
+
const parsed = new URL(url);
|
|
292
|
+
const transport = parsed.protocol === 'https:' ? https : http;
|
|
293
|
+
try {
|
|
294
|
+
const req = transport.get(url, (res) => {
|
|
295
|
+
if (!res.statusCode || res.statusCode < 200 || res.statusCode >= 300) {
|
|
296
|
+
resolve(null);
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
299
|
+
const chunks = [];
|
|
300
|
+
res.on('data', (chunk) => chunks.push(chunk));
|
|
301
|
+
res.on('end', () => resolve(Buffer.concat(chunks).toString('utf-8')));
|
|
302
|
+
res.on('error', () => resolve(null));
|
|
303
|
+
});
|
|
304
|
+
req.on('error', () => resolve(null));
|
|
305
|
+
req.setTimeout(_timeoutMs, () => {
|
|
306
|
+
req.destroy();
|
|
307
|
+
resolve(null);
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
catch {
|
|
311
|
+
resolve(null);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Extract a text summary from an arXiv Atom XML response.
|
|
317
|
+
* Returns the first 200 chars of the summary element, or null.
|
|
318
|
+
*/
|
|
319
|
+
function extractArxivSummary(xml) {
|
|
320
|
+
const match = xml.match(/<summary[^>]*>([\s\S]*?)<\/summary>/i);
|
|
321
|
+
if (!match)
|
|
322
|
+
return null;
|
|
323
|
+
const text = match[1].replace(/\s+/g, ' ').trim();
|
|
324
|
+
return text ? text.slice(0, 200) : null;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Extract a text abstract from a Semantic Scholar JSON response.
|
|
328
|
+
* Returns the first 200 chars of the abstract field, or null.
|
|
329
|
+
*/
|
|
330
|
+
function extractSemanticAbstract(json) {
|
|
331
|
+
try {
|
|
332
|
+
const data = JSON.parse(json);
|
|
333
|
+
// Response is { data: [ { title, abstract, ... } ] }
|
|
334
|
+
const dataArr = Array.isArray(data.data) ? data.data : null;
|
|
335
|
+
if (dataArr && dataArr.length > 0) {
|
|
336
|
+
const abstract = dataArr[0].abstract;
|
|
337
|
+
if (typeof abstract === 'string' && abstract.trim()) {
|
|
338
|
+
return abstract.slice(0, 200);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
catch {
|
|
343
|
+
// not valid JSON
|
|
344
|
+
}
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Iterate over unresolved CitationNodes and attempt to fetch metadata from
|
|
349
|
+
* arXiv and/or Semantic Scholar APIs.
|
|
350
|
+
*
|
|
351
|
+
* Accepts an optional fetchFn for dependency injection (enables mocking in tests).
|
|
352
|
+
* The default fetchFn uses Node's built-in https.get.
|
|
353
|
+
*
|
|
354
|
+
* @param graph - The CitationGraph to update (mutated in place)
|
|
355
|
+
* @param apiConfig - Controls which APIs are queried and timeout behaviour
|
|
356
|
+
* @param fetchFn - Optional injectable fetch function for testing
|
|
357
|
+
* @returns The updated CitationGraph (same reference as input)
|
|
358
|
+
*/
|
|
359
|
+
async function resolveCitations(graph, apiConfig, fetchFn) {
|
|
360
|
+
const fetch = fetchFn ?? defaultFetchFn;
|
|
361
|
+
const timeoutMs = apiConfig.timeout_ms ?? 5000;
|
|
362
|
+
for (const node of graph.nodes) {
|
|
363
|
+
if (node.resolved)
|
|
364
|
+
continue;
|
|
365
|
+
const titleEncoded = encodeURIComponent(node.title);
|
|
366
|
+
let summary = null;
|
|
367
|
+
if (apiConfig.arxiv_enabled) {
|
|
368
|
+
const arxivUrl = `https://export.arxiv.org/api/query?search_query=ti:${titleEncoded}&max_results=1`;
|
|
369
|
+
try {
|
|
370
|
+
const body = await fetch(arxivUrl, timeoutMs);
|
|
371
|
+
if (body) {
|
|
372
|
+
summary = extractArxivSummary(body);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
// non-fatal
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (!summary && apiConfig.semantic_scholar_enabled) {
|
|
380
|
+
const ssUrl = `https://api.semanticscholar.org/graph/v1/paper/search?query=${titleEncoded}&limit=1`;
|
|
381
|
+
try {
|
|
382
|
+
const body = await fetch(ssUrl, timeoutMs);
|
|
383
|
+
if (body) {
|
|
384
|
+
summary = extractSemanticAbstract(body);
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
catch {
|
|
388
|
+
// non-fatal
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (summary !== null) {
|
|
392
|
+
node.resolved = true;
|
|
393
|
+
node.technique_summary = summary;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
return graph;
|
|
397
|
+
}
|
|
398
|
+
// --- findUnresolved -----------------------------------------------------------
|
|
399
|
+
/**
|
|
400
|
+
* Return all unresolved CitationNodes in the graph.
|
|
401
|
+
* If priority is provided, only nodes with that priority are returned.
|
|
402
|
+
*
|
|
403
|
+
* @param graph - The CitationGraph to search
|
|
404
|
+
* @param priority - Optional priority filter ('critical' | 'normal' | 'low')
|
|
405
|
+
* @returns Array of CitationNode objects where resolved is false
|
|
406
|
+
*/
|
|
407
|
+
function findUnresolved(graph, priority) {
|
|
408
|
+
return graph.nodes.filter((node) => {
|
|
409
|
+
if (node.resolved)
|
|
410
|
+
return false;
|
|
411
|
+
if (priority !== undefined)
|
|
412
|
+
return node.priority === priority;
|
|
413
|
+
return true;
|
|
414
|
+
});
|
|
415
|
+
}
|
|
416
|
+
// --- traverseCitationGraph ---------------------------------------------------
|
|
417
|
+
/**
|
|
418
|
+
* Perform BFS traversal of the citation graph from all root nodes (nodes with
|
|
419
|
+
* no incoming edges), respecting depth and node-count limits.
|
|
420
|
+
*
|
|
421
|
+
* Cycle detection: tracks visited slugs in a Set; any slug already visited is
|
|
422
|
+
* skipped, preventing infinite loops on circular citation chains.
|
|
423
|
+
*
|
|
424
|
+
* Limits:
|
|
425
|
+
* - max_depth: BFS depth from root nodes. Nodes at this depth are visited but
|
|
426
|
+
* their children are not enqueued.
|
|
427
|
+
* - max_nodes: Total node visit cap. Processing halts once total_visited
|
|
428
|
+
* reaches this limit.
|
|
429
|
+
*
|
|
430
|
+
* Unresolved leaves: A node with no outgoing edges in the adjacency map and
|
|
431
|
+
* resolved=false is added to unresolved_leaves.
|
|
432
|
+
*
|
|
433
|
+
* @param graph - The CitationGraph to traverse
|
|
434
|
+
* @param options - Optional partial TraversalOptions (merged with defaults)
|
|
435
|
+
* @returns TraversalResult with visited nodes, traversed edges, and statistics
|
|
436
|
+
*/
|
|
437
|
+
function traverseCitationGraph(graph, options) {
|
|
438
|
+
const opts = {
|
|
439
|
+
max_depth: options?.max_depth ?? 3,
|
|
440
|
+
max_nodes: options?.max_nodes ?? 50,
|
|
441
|
+
};
|
|
442
|
+
const emptyResult = {
|
|
443
|
+
visited_nodes: [],
|
|
444
|
+
edges_traversed: [],
|
|
445
|
+
unresolved_leaves: [],
|
|
446
|
+
depth_reached: 0,
|
|
447
|
+
total_visited: 0,
|
|
448
|
+
};
|
|
449
|
+
if (graph.nodes.length === 0) {
|
|
450
|
+
return emptyResult;
|
|
451
|
+
}
|
|
452
|
+
// Build adjacency map: slug → outgoing edges
|
|
453
|
+
const adjacency = new Map();
|
|
454
|
+
for (const edge of graph.edges) {
|
|
455
|
+
if (!adjacency.has(edge.from_slug)) {
|
|
456
|
+
adjacency.set(edge.from_slug, []);
|
|
457
|
+
}
|
|
458
|
+
adjacency.get(edge.from_slug).push(edge);
|
|
459
|
+
}
|
|
460
|
+
// Build node lookup map: slug → CitationNode
|
|
461
|
+
const nodeMap = new Map();
|
|
462
|
+
for (const node of graph.nodes) {
|
|
463
|
+
nodeMap.set(node.slug, node);
|
|
464
|
+
}
|
|
465
|
+
// Find root nodes: nodes that appear as from_slug but never as to_slug
|
|
466
|
+
// (i.e., have no incoming edges). If all nodes have incoming edges (e.g., cycle),
|
|
467
|
+
// treat all nodes as roots to avoid empty traversal.
|
|
468
|
+
const hasIncoming = new Set();
|
|
469
|
+
for (const edge of graph.edges) {
|
|
470
|
+
hasIncoming.add(edge.to_slug);
|
|
471
|
+
}
|
|
472
|
+
const rootNodes = graph.nodes.filter((n) => !hasIncoming.has(n.slug));
|
|
473
|
+
const seeds = rootNodes.length > 0 ? rootNodes : graph.nodes;
|
|
474
|
+
// BFS
|
|
475
|
+
const visited = new Set();
|
|
476
|
+
const visitedNodes = [];
|
|
477
|
+
const edgesTraversed = [];
|
|
478
|
+
const unresolvedLeaves = [];
|
|
479
|
+
let depthReached = 0;
|
|
480
|
+
let totalVisited = 0;
|
|
481
|
+
const queue = [];
|
|
482
|
+
for (const seed of seeds) {
|
|
483
|
+
if (!visited.has(seed.slug)) {
|
|
484
|
+
visited.add(seed.slug);
|
|
485
|
+
queue.push({ node: seed, depth: 0 });
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
let qi = 0;
|
|
489
|
+
while (qi < queue.length) {
|
|
490
|
+
if (totalVisited >= opts.max_nodes)
|
|
491
|
+
break;
|
|
492
|
+
const { node, depth } = queue[qi++];
|
|
493
|
+
visitedNodes.push(node);
|
|
494
|
+
totalVisited++;
|
|
495
|
+
if (depth > depthReached)
|
|
496
|
+
depthReached = depth;
|
|
497
|
+
if (totalVisited >= opts.max_nodes)
|
|
498
|
+
break;
|
|
499
|
+
const outgoing = adjacency.get(node.slug) ?? [];
|
|
500
|
+
// Check if leaf (no outgoing edges)
|
|
501
|
+
if (outgoing.length === 0 && !node.resolved) {
|
|
502
|
+
unresolvedLeaves.push(node);
|
|
503
|
+
}
|
|
504
|
+
// If at max depth, do not enqueue children
|
|
505
|
+
if (depth >= opts.max_depth)
|
|
506
|
+
continue;
|
|
507
|
+
for (const edge of outgoing) {
|
|
508
|
+
const targetNode = nodeMap.get(edge.to_slug);
|
|
509
|
+
if (!targetNode)
|
|
510
|
+
continue;
|
|
511
|
+
if (visited.has(edge.to_slug))
|
|
512
|
+
continue;
|
|
513
|
+
if (totalVisited + (queue.length - qi) >= opts.max_nodes) {
|
|
514
|
+
// Approximate cap: stop enqueuing if we're near the limit
|
|
515
|
+
// (exact cap enforced at dequeue time above)
|
|
516
|
+
}
|
|
517
|
+
visited.add(edge.to_slug);
|
|
518
|
+
edgesTraversed.push(edge);
|
|
519
|
+
queue.push({ node: targetNode, depth: depth + 1 });
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
return {
|
|
523
|
+
visited_nodes: visitedNodes,
|
|
524
|
+
edges_traversed: edgesTraversed,
|
|
525
|
+
unresolved_leaves: unresolvedLeaves,
|
|
526
|
+
depth_reached: depthReached,
|
|
527
|
+
total_visited: totalVisited,
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
// --- resolveTransitiveDeps ---------------------------------------------------
|
|
531
|
+
/**
|
|
532
|
+
* Expand a CitationGraph by performing BFS traversal and merging all
|
|
533
|
+
* transitively discovered nodes and edges into the graph.
|
|
534
|
+
*
|
|
535
|
+
* Deduplication:
|
|
536
|
+
* - Nodes: only added if their slug is not already in graph.nodes
|
|
537
|
+
* - Edges: only added if not already present (keyed by from_slug + to_slug + component_name)
|
|
538
|
+
*
|
|
539
|
+
* Returns a new CitationGraph (does not mutate the input).
|
|
540
|
+
*
|
|
541
|
+
* @param graph - The CitationGraph to expand
|
|
542
|
+
* @param options - Optional partial TraversalOptions passed to traverseCitationGraph
|
|
543
|
+
* @returns A new CitationGraph with merged transitive nodes and edges
|
|
544
|
+
*/
|
|
545
|
+
function resolveTransitiveDeps(graph, options) {
|
|
546
|
+
const result = traverseCitationGraph(graph, options);
|
|
547
|
+
// Build set of existing node slugs
|
|
548
|
+
const existingSlugs = new Set(graph.nodes.map((n) => n.slug));
|
|
549
|
+
// Merge new nodes (not already in graph)
|
|
550
|
+
const newNodes = result.visited_nodes.filter((n) => !existingSlugs.has(n.slug));
|
|
551
|
+
const mergedNodes = [...graph.nodes, ...newNodes];
|
|
552
|
+
// Build set of existing edge keys for deduplication
|
|
553
|
+
const edgeKey = (e) => `${e.from_slug}::${e.to_slug}::${e.component_name}`;
|
|
554
|
+
const existingEdgeKeys = new Set(graph.edges.map(edgeKey));
|
|
555
|
+
// Merge new edges
|
|
556
|
+
const newEdges = result.edges_traversed.filter((e) => !existingEdgeKeys.has(edgeKey(e)));
|
|
557
|
+
const mergedEdges = [...graph.edges, ...newEdges];
|
|
558
|
+
return {
|
|
559
|
+
nodes: mergedNodes,
|
|
560
|
+
edges: mergedEdges,
|
|
561
|
+
built_at: new Date().toISOString(),
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
// --- fetchExternalPaper -------------------------------------------------------
|
|
565
|
+
/**
|
|
566
|
+
* Attempt to auto-retrieve metadata for a single paper slug from external APIs.
|
|
567
|
+
*
|
|
568
|
+
* Uses arXiv-first, Semantic Scholar-fallback strategy (same as resolveCitations),
|
|
569
|
+
* but operates on a single slug rather than iterating over a graph.
|
|
570
|
+
*
|
|
571
|
+
* Accepts an optional fetchFn for dependency injection (enables mocking in tests).
|
|
572
|
+
* The default fetchFn uses Node's built-in https.get with a 5-second timeout.
|
|
573
|
+
*
|
|
574
|
+
* On success: returns a CitationNode with resolved=true and technique_summary populated.
|
|
575
|
+
* On failure (both APIs return null): writes a warning to stderr and returns null.
|
|
576
|
+
* Any thrown error is caught and returns null.
|
|
577
|
+
*
|
|
578
|
+
* @param slug - Paper slug to look up (used as query title)
|
|
579
|
+
* @param fetchFn - Optional injectable fetch function for testing
|
|
580
|
+
* @returns CitationNode with resolved=true on success, null on failure
|
|
581
|
+
*/
|
|
582
|
+
async function fetchExternalPaper(slug, fetchFn) {
|
|
583
|
+
const fetch = fetchFn ?? defaultFetchFn;
|
|
584
|
+
const timeoutMs = 5000;
|
|
585
|
+
try {
|
|
586
|
+
const slugEncoded = encodeURIComponent(slug);
|
|
587
|
+
let summary = null;
|
|
588
|
+
// arXiv-first: search by title
|
|
589
|
+
const arxivUrl = `https://export.arxiv.org/api/query?search_query=ti:${slugEncoded}&max_results=1`;
|
|
590
|
+
try {
|
|
591
|
+
const body = await fetch(arxivUrl, timeoutMs);
|
|
592
|
+
if (body) {
|
|
593
|
+
summary = extractArxivSummary(body);
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
catch {
|
|
597
|
+
// non-fatal
|
|
598
|
+
}
|
|
599
|
+
// Semantic Scholar fallback: only if arXiv returned no summary
|
|
600
|
+
if (summary === null) {
|
|
601
|
+
const ssUrl = `https://api.semanticscholar.org/graph/v1/paper/search?query=${slugEncoded}&limit=1`;
|
|
602
|
+
try {
|
|
603
|
+
const body = await fetch(ssUrl, timeoutMs);
|
|
604
|
+
if (body) {
|
|
605
|
+
summary = extractSemanticAbstract(body);
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
catch {
|
|
609
|
+
// non-fatal
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
if (summary !== null) {
|
|
613
|
+
return {
|
|
614
|
+
slug,
|
|
615
|
+
title: slug,
|
|
616
|
+
resolved: true,
|
|
617
|
+
priority: 'normal',
|
|
618
|
+
technique_summary: summary,
|
|
619
|
+
missing_components: [],
|
|
620
|
+
borrowed_components: [],
|
|
621
|
+
};
|
|
622
|
+
}
|
|
623
|
+
// Both APIs failed — warn and return null
|
|
624
|
+
process.stderr.write(`[grd] WARNING: fetchExternalPaper: could not resolve "${slug}" from arXiv or Semantic Scholar\n`);
|
|
625
|
+
return null;
|
|
626
|
+
}
|
|
627
|
+
catch {
|
|
628
|
+
return null;
|
|
629
|
+
}
|
|
630
|
+
}
|
|
631
|
+
// --- Exports -----------------------------------------------------------------
|
|
632
|
+
module.exports = {
|
|
633
|
+
parseMissingComponents,
|
|
634
|
+
parseBorrowedComponents,
|
|
635
|
+
buildCitationGraph,
|
|
636
|
+
resolveCitations,
|
|
637
|
+
findUnresolved,
|
|
638
|
+
traverseCitationGraph,
|
|
639
|
+
resolveTransitiveDeps,
|
|
640
|
+
fetchExternalPaper,
|
|
641
|
+
};
|
|
642
|
+
//# sourceMappingURL=citations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"citations.js","sourceRoot":"","sources":["../../lib/citations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../../lib/cleanup.ts"],"names":[],"mappings":""}
|