hyperresearch 0.3.0__tar.gz → 0.4.0__tar.gz

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.
Files changed (97) hide show
  1. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/.gitignore +1 -0
  2. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/CHANGELOG.md +21 -0
  3. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/PKG-INFO +1 -1
  4. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/pyproject.toml +1 -1
  5. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/__init__.py +1 -1
  6. hyperresearch-0.4.0/src/hyperresearch/core/agent_docs.py +579 -0
  7. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/note.py +1 -0
  8. hyperresearch-0.4.0/src/hyperresearch/skills/research.md +526 -0
  9. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/web/crawl4ai_provider.py +19 -8
  10. hyperresearch-0.3.0/src/hyperresearch/core/agent_docs.py +0 -422
  11. hyperresearch-0.3.0/src/hyperresearch/skills/research.md +0 -252
  12. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/.github/workflows/ci.yml +0 -0
  13. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/.github/workflows/publish.yml +0 -0
  14. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/CONTRIBUTING.md +0 -0
  15. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/LICENSE +0 -0
  16. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/README.md +0 -0
  17. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/assets/banner.png +0 -0
  18. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/__main__.py +0 -0
  19. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/__init__.py +0 -0
  20. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/_output.py +0 -0
  21. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/assets.py +0 -0
  22. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/batch.py +0 -0
  23. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/config_cmd.py +0 -0
  24. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/dedup.py +0 -0
  25. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/export.py +0 -0
  26. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/fetch.py +0 -0
  27. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/fetch_batch.py +0 -0
  28. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/git_cmd.py +0 -0
  29. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/graph.py +0 -0
  30. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/import_cmd.py +0 -0
  31. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/index.py +0 -0
  32. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/install.py +0 -0
  33. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/link.py +0 -0
  34. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/lint.py +0 -0
  35. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/main.py +0 -0
  36. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/mcp_cmd.py +0 -0
  37. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/note.py +0 -0
  38. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/repair.py +0 -0
  39. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/research.py +0 -0
  40. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/search.py +0 -0
  41. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/serve.py +0 -0
  42. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/setup.py +0 -0
  43. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/sources.py +0 -0
  44. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/tag.py +0 -0
  45. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/template.py +0 -0
  46. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/topic.py +0 -0
  47. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/cli/watch.py +0 -0
  48. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/__init__.py +0 -0
  49. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/config.py +0 -0
  50. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/db.py +0 -0
  51. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/enrich.py +0 -0
  52. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/fetcher.py +0 -0
  53. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/frontmatter.py +0 -0
  54. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/hooks.py +0 -0
  55. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/linker.py +0 -0
  56. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/migrations.py +0 -0
  57. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/patterns.py +0 -0
  58. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/similarity.py +0 -0
  59. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/sync.py +0 -0
  60. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/templates.py +0 -0
  61. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/core/vault.py +0 -0
  62. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/export/__init__.py +0 -0
  63. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/graph/__init__.py +0 -0
  64. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/indexgen/__init__.py +0 -0
  65. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/indexgen/generator.py +0 -0
  66. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/mcp/__init__.py +0 -0
  67. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/mcp/server.py +0 -0
  68. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/models/__init__.py +0 -0
  69. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/models/graph.py +0 -0
  70. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/models/note.py +0 -0
  71. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/models/output.py +0 -0
  72. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/models/search.py +0 -0
  73. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/py.typed +0 -0
  74. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/search/__init__.py +0 -0
  75. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/search/filters.py +0 -0
  76. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/search/fts.py +0 -0
  77. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/serve/__init__.py +0 -0
  78. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/serve/renderer.py +0 -0
  79. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/serve/server.py +0 -0
  80. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/skills/__init__.py +0 -0
  81. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/web/__init__.py +0 -0
  82. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/web/base.py +0 -0
  83. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/src/hyperresearch/web/builtin.py +0 -0
  84. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/__init__.py +0 -0
  85. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/conftest.py +0 -0
  86. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_cli/__init__.py +0 -0
  87. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_cli/test_commands.py +0 -0
  88. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_cli/test_note_ops.py +0 -0
  89. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_core/__init__.py +0 -0
  90. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_core/test_frontmatter.py +0 -0
  91. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_core/test_note.py +0 -0
  92. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_core/test_sync.py +0 -0
  93. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_core/test_vault.py +0 -0
  94. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_graph/__init__.py +0 -0
  95. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_graph/test_links.py +0 -0
  96. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_search/__init__.py +0 -0
  97. {hyperresearch-0.3.0 → hyperresearch-0.4.0}/tests/test_search/test_fts.py +0 -0
@@ -13,3 +13,4 @@ build/
13
13
  *.egg
14
14
  .env
15
15
  bench/
16
+ codex_bench/
@@ -1,5 +1,25 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.4.0] - 2026-04-13
4
+
5
+ ### New
6
+
7
+ - **Request-type classification (Step 0)** — The research workflow now starts by classifying the user's request into one of 7 types (Canonical Knowledge Retrieval, Market / Landscape Mapping, Engineering / Technical How-To, Interpretive / Humanities Analysis, Comparative Evaluation, Emerging / Cutting-Edge Research, Forecast / Strategy / Recommendation) plus a General fallback. Classification happens before any searching and governs the rest of the workflow.
8
+ - **Type-specific parameter blocks** — Each of the 7 types specifies its own source strategy (count + primary/secondary mix), target length, opening-section shape, H2 heading count, analytical mode, and special rules. A humanities analysis wants 6–10 long thematic sections; a market landscape wants 8–14 vendor-cluster sections with a mandatory comparison matrix; a cutting-edge research request wants primary-heavy preprint reading with a "What we don't know yet" section. One workflow, seven parameterizations.
9
+ - **Primary-heavy vs. secondary-heavy source policy** — New explicit axis: Types 1/4/5/6 are primary-heavy (cite originals, engage deeply, prune irrelevant secondary coverage), Types 2/7 are secondary-heavy (triangulate across many descriptions), Type 3 is balanced. Source count is now a function of request type, not topic complexity.
10
+ - **Conceptual scaffold step (before writing)** — Agent must answer four questions in a scratch file before drafting: the hard question, the naive answer, the structural tension, and a dependency-ordered heading sketch. The final report's opening section must be a framework section, not a definition.
11
+ - **Cross-source comparison step** — Before writing the body, agent finds 3–5 places where sources actually disagree and captures short comparison blocks. Sources earn citations by being compared, not listed. These become the backbone of body sections.
12
+ - **Writing-draft hard constraints** — Target 400–600 words per H2, 12–20 H2s on a 10K-word report, never one-section-per-source, every section ends with an analytical beat, comparison tables not fact tables. Type-specific blocks override these (Type 4 Humanities targets 800–1500 words per section across 6–10 sections).
13
+ - **Frontmatter-first note triage (Step 4.5)** — Six-level protocol for reading notes efficiently. Always start with `note list -j` for summaries, use `note show --meta -j` for frontmatter-only reads, `search --include-body --max-tokens 6000 -j` for token-capped multi-note pulls, and **delegate notes with `word_count > 6000` to a fresh Sonnet subagent** with a pointed extraction prompt (~40× context savings per large note). Rely on the summary field first; read the body only when it earns its place.
14
+ - **Type-aware adversarial audit** — The structure-auditor subagent now checks whether the draft honors its declared type's parameter block: thematic sections for Humanities, mandatory comparison matrix for Comparative, "What we don't know yet" for Emerging, a position on winners for Market. Flags every type violation.
15
+
16
+ ### Changed
17
+
18
+ - **`fit_markdown` via PruningContentFilter** — crawl4ai provider now uses `DefaultMarkdownGenerator` with `PruningContentFilter` so fetched notes contain just the main content, stripping navigation, footers, and sidebar chrome. Both `AsyncWebCrawler.arun()` and the Playwright visible-browser path use the same generator for consistent output. Applied to single fetch, batch fetch, and visible browser paths.
19
+ - **Skip numeric wiki-links in note parser** — `[[100]]`-style citation markers in bibliographies and academic papers are no longer extracted as note references. Avoids thousands of spurious broken-link warnings on papers that use numbered references.
20
+ - **"Over-collect, then prune" reframed as "over-collect, then engage deeply"** — A report built from 30 sources that disagree and force you to take positions is worth more than a report built from 80 sources that each contribute one bullet of description. Collection is a means to an argument, not the goal.
21
+ - **Scaffold and comparison artifacts are ephemeral, NOT hyperresearch notes** — Both the conceptual scaffold and the cross-source comparison blocks live in `/tmp/scaffold.md` or working memory, explicitly not as notes. Protects the research base from pre-writing scratch work.
22
+
3
23
  ## [0.3.0] - 2026-04-11
4
24
 
5
25
  ### New
@@ -98,6 +118,7 @@ Initial release. Forked from [llm-kasten](https://github.com/jordan-gibbs/llm-ka
98
118
  - Web viewer with force-directed knowledge graph
99
119
  - 70 tests
100
120
 
121
+ [0.4.0]: https://github.com/jordan-gibbs/hyperresearch/releases/tag/v0.4.0
101
122
  [0.3.0]: https://github.com/jordan-gibbs/hyperresearch/releases/tag/v0.3.0
102
123
  [0.2.0]: https://github.com/jordan-gibbs/hyperresearch/releases/tag/v0.2.0
103
124
  [0.1.0]: https://github.com/jordan-gibbs/hyperresearch/releases/tag/v0.1.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperresearch
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Agent-driven research knowledge base. Browse, collect, and synthesize web sources into a searchable wiki.
5
5
  Project-URL: Homepage, https://github.com/jordan-gibbs/hyperresearch
6
6
  Project-URL: Repository, https://github.com/jordan-gibbs/hyperresearch
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hyperresearch"
7
- version = "0.3.0"
7
+ version = "0.4.0"
8
8
  description = "Agent-driven research knowledge base. Browse, collect, and synthesize web sources into a searchable wiki."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,3 +1,3 @@
1
1
  """Hyperresearch — agent-driven research knowledge base."""
2
2
 
3
- __version__ = "0.2.0"
3
+ __version__ = "0.4.0"