deep-report 0.1.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 (32) hide show
  1. deep_report-0.1.0/.gitignore +50 -0
  2. deep_report-0.1.0/LICENSE +21 -0
  3. deep_report-0.1.0/PKG-INFO +58 -0
  4. deep_report-0.1.0/README.md +41 -0
  5. deep_report-0.1.0/pyproject.toml +42 -0
  6. deep_report-0.1.0/src/deep_report/__init__.py +3 -0
  7. deep_report-0.1.0/src/deep_report/__main__.py +5 -0
  8. deep_report-0.1.0/src/deep_report/cli.py +91 -0
  9. deep_report-0.1.0/src/deep_report/orchestrator/__init__.py +7 -0
  10. deep_report-0.1.0/src/deep_report/orchestrator/approval.py +746 -0
  11. deep_report-0.1.0/src/deep_report/orchestrator/intervention.py +218 -0
  12. deep_report-0.1.0/src/deep_report/orchestrator/main.py +1515 -0
  13. deep_report-0.1.0/src/deep_report/orchestrator/papers/__init__.py +15 -0
  14. deep_report-0.1.0/src/deep_report/orchestrator/papers/downloader.py +249 -0
  15. deep_report-0.1.0/src/deep_report/orchestrator/papers/sources.py +464 -0
  16. deep_report-0.1.0/src/deep_report/orchestrator/phases/__init__.py +5 -0
  17. deep_report-0.1.0/src/deep_report/orchestrator/phases/cleanup.py +277 -0
  18. deep_report-0.1.0/src/deep_report/orchestrator/phases/plan.py +388 -0
  19. deep_report-0.1.0/src/deep_report/orchestrator/phases/research.py +763 -0
  20. deep_report-0.1.0/src/deep_report/orchestrator/phases/setup.py +618 -0
  21. deep_report-0.1.0/src/deep_report/orchestrator/phases/synthesize.py +767 -0
  22. deep_report-0.1.0/src/deep_report/orchestrator/progress.py +185 -0
  23. deep_report-0.1.0/src/deep_report/orchestrator/registry.py +203 -0
  24. deep_report-0.1.0/src/deep_report/orchestrator/state.py +385 -0
  25. deep_report-0.1.0/src/deep_report/orchestrator/topic_analyzer.py +273 -0
  26. deep_report-0.1.0/src/deep_report/orchestrator/ui.py +1183 -0
  27. deep_report-0.1.0/src/deep_report/orchestrator/utils/__init__.py +52 -0
  28. deep_report-0.1.0/src/deep_report/orchestrator/utils/agents.py +979 -0
  29. deep_report-0.1.0/src/deep_report/orchestrator/utils/keyboard.py +191 -0
  30. deep_report-0.1.0/src/deep_report/orchestrator/utils/role_enforcer.py +94 -0
  31. deep_report-0.1.0/src/deep_report/orchestrator/watch_progress.py +277 -0
  32. deep_report-0.1.0/src/deep_report/skill/SKILL.md +78 -0
@@ -0,0 +1,50 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ .Python
7
+ build/
8
+ develop-eggs/
9
+ dist/
10
+ downloads/
11
+ eggs/
12
+ .eggs/
13
+ lib/
14
+ lib64/
15
+ parts/
16
+ sdist/
17
+ var/
18
+ wheels/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Virtual environments
24
+ .env
25
+ .venv
26
+ env/
27
+ venv/
28
+ ENV/
29
+
30
+ # IDE
31
+ .idea/
32
+ .vscode/
33
+ *.swp
34
+ *.swo
35
+ *~
36
+
37
+ # Testing
38
+ .pytest_cache/
39
+ .coverage
40
+ htmlcov/
41
+
42
+ # Claude Code
43
+ .claude/
44
+
45
+ # Global state symlink
46
+ .global-state
47
+
48
+ # OS
49
+ .DS_Store
50
+ Thumbs.db
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,58 @@
1
+ Metadata-Version: 2.4
2
+ Name: deep-report
3
+ Version: 0.1.0
4
+ Summary: Multi-agent research report generator powered by Claude
5
+ Project-URL: Homepage, https://github.com/lampadare/deep-report
6
+ Project-URL: Repository, https://github.com/lampadare/deep-report
7
+ License-Expression: MIT
8
+ License-File: LICENSE
9
+ Requires-Python: >=3.10
10
+ Requires-Dist: questionary>=2.0.0
11
+ Requires-Dist: requests>=2.28.0
12
+ Requires-Dist: rich>=13.0.0
13
+ Provides-Extra: dev
14
+ Requires-Dist: pytest; extra == 'dev'
15
+ Requires-Dist: ruff; extra == 'dev'
16
+ Description-Content-Type: text/markdown
17
+
18
+ # Deep Report
19
+
20
+ Multi-agent research reports, powered by Claude.
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ pipx install deep-report
26
+ ```
27
+
28
+ Requires Python 3.10+ and [Claude Code](https://claude.ai/download) installed and authenticated.
29
+
30
+ ## Use
31
+
32
+ ```bash
33
+ deep-report "quantum computing" --quick
34
+ ```
35
+
36
+ Or configure interactively:
37
+
38
+ ```bash
39
+ deep-report "AI safety" --configure
40
+ ```
41
+
42
+ See all options:
43
+
44
+ ```bash
45
+ deep-report --help
46
+ ```
47
+
48
+ ## Claude Code skill
49
+
50
+ ```bash
51
+ deep-report --install-skill
52
+ ```
53
+
54
+ Then in Claude Code: `/deep-report "topic" --quick`
55
+
56
+ ## License
57
+
58
+ MIT
@@ -0,0 +1,41 @@
1
+ # Deep Report
2
+
3
+ Multi-agent research reports, powered by Claude.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pipx install deep-report
9
+ ```
10
+
11
+ Requires Python 3.10+ and [Claude Code](https://claude.ai/download) installed and authenticated.
12
+
13
+ ## Use
14
+
15
+ ```bash
16
+ deep-report "quantum computing" --quick
17
+ ```
18
+
19
+ Or configure interactively:
20
+
21
+ ```bash
22
+ deep-report "AI safety" --configure
23
+ ```
24
+
25
+ See all options:
26
+
27
+ ```bash
28
+ deep-report --help
29
+ ```
30
+
31
+ ## Claude Code skill
32
+
33
+ ```bash
34
+ deep-report --install-skill
35
+ ```
36
+
37
+ Then in Claude Code: `/deep-report "topic" --quick`
38
+
39
+ ## License
40
+
41
+ MIT
@@ -0,0 +1,42 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "deep-report"
7
+ version = "0.1.0"
8
+ description = "Multi-agent research report generator powered by Claude"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ requires-python = ">=3.10"
12
+ dependencies = [
13
+ "rich>=13.0.0",
14
+ "requests>=2.28.0",
15
+ "questionary>=2.0.0",
16
+ ]
17
+
18
+ [project.optional-dependencies]
19
+ dev = ["pytest", "ruff"]
20
+
21
+ [project.scripts]
22
+ deep-report = "deep_report.cli:main"
23
+
24
+ [project.urls]
25
+ Homepage = "https://github.com/lampadare/deep-report"
26
+ Repository = "https://github.com/lampadare/deep-report"
27
+
28
+ [tool.hatch.build.targets.wheel]
29
+ packages = ["src/deep_report"]
30
+
31
+ [tool.hatch.build.targets.sdist]
32
+ exclude = [
33
+ "SEARCH_TOOLS.md",
34
+ "SEARCH_TOOLS_FIXES.md",
35
+ "uv.lock",
36
+ ".gitignore",
37
+ "tests/",
38
+ ]
39
+
40
+ [tool.ruff]
41
+ line-length = 100
42
+ target-version = "py310"
@@ -0,0 +1,3 @@
1
+ """Deep Report - Multi-agent research report generator."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,5 @@
1
+ """Allow running as: python -m deep_report"""
2
+ from .cli import main
3
+
4
+ if __name__ == "__main__":
5
+ main()
@@ -0,0 +1,91 @@
1
+ #!/usr/bin/env python3
2
+ """CLI entry point for deep-report."""
3
+
4
+ import sys
5
+ import shutil
6
+ import subprocess
7
+ from pathlib import Path
8
+
9
+
10
+ def check_claude_cli():
11
+ """Verify Claude CLI is available."""
12
+ if not shutil.which("claude"):
13
+ from .orchestrator.ui import ui
14
+ ui.error("Claude CLI not found.")
15
+ ui.info("deep-report requires Claude Code to be installed.")
16
+ ui.info("Install from: https://claude.ai/download")
17
+ ui.info("After installing, run 'claude' once to authenticate.")
18
+ sys.exit(1)
19
+
20
+
21
+ def check_claude_auth():
22
+ """Probe Claude CLI authentication. Warns on failure, never blocks."""
23
+ try:
24
+ result = subprocess.run(
25
+ ["claude", "--print", "--model", "haiku", "say ok"],
26
+ capture_output=True, text=True, timeout=10,
27
+ )
28
+ if result.returncode != 0:
29
+ from .orchestrator.ui import ui
30
+ ui.warning("Claude CLI may not be authenticated. Run 'claude' to log in.")
31
+ except subprocess.TimeoutExpired:
32
+ from .orchestrator.ui import ui
33
+ ui.warning("Claude CLI auth check timed out. Run 'claude' to verify authentication.")
34
+ except Exception:
35
+ # Don't block on unexpected errors
36
+ pass
37
+
38
+
39
+ def main():
40
+ # Handle --install-skill as alias for --setup-skill
41
+ if "--install-skill" in sys.argv:
42
+ sys.argv[sys.argv.index("--install-skill")] = "--setup-skill"
43
+
44
+ if "--version" in sys.argv:
45
+ from . import __version__
46
+ print(f"deep-report {__version__}")
47
+ return
48
+
49
+ if "--help" not in sys.argv and "-h" not in sys.argv:
50
+ check_claude_cli()
51
+
52
+ # Import and run orchestrator
53
+ from .orchestrator.main import main as orchestrator_main
54
+ sys.exit(orchestrator_main())
55
+
56
+
57
+ def install_skill():
58
+ """Install/symlink the Claude Code skill."""
59
+ from .orchestrator.ui import ui
60
+
61
+ import deep_report
62
+ skill_src = Path(deep_report.__path__[0]) / "skill"
63
+ skill_dst = Path.home() / ".claude" / "skills" / "deep-report"
64
+
65
+ # Create skills directory if needed
66
+ skill_dst.parent.mkdir(parents=True, exist_ok=True)
67
+
68
+ if skill_dst.exists() or skill_dst.is_symlink():
69
+ ui.info(f"Skill already exists at {skill_dst}")
70
+ response = input("Replace it? [y/N]: ").strip().lower()
71
+ if response != 'y':
72
+ ui.info("Cancelled.")
73
+ return
74
+ if skill_dst.is_symlink():
75
+ skill_dst.unlink()
76
+ else:
77
+ import shutil
78
+ shutil.rmtree(skill_dst)
79
+
80
+ try:
81
+ skill_dst.symlink_to(skill_src)
82
+ except (OSError, PermissionError) as e:
83
+ ui.error(f"Could not create skill link: {e}")
84
+ return
85
+
86
+ ui.success(f"Skill installed: {skill_dst} -> {skill_src}")
87
+ ui.info("You can now use /deep-report in Claude Code")
88
+
89
+
90
+ if __name__ == "__main__":
91
+ main()
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env python3
2
+ """Deep Report Orchestrator - Script-based multi-agent research."""
3
+
4
+ from .state import State
5
+ from .main import run_new_report, resume_report
6
+
7
+ __all__ = ["State", "run_new_report", "resume_report"]