boomtick-cli 0.2.1__tar.gz → 0.2.2__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 (128) hide show
  1. boomtick_cli-0.2.2/PKG-INFO +220 -0
  2. boomtick_cli-0.2.2/boomtick_cli.egg-info/PKG-INFO +220 -0
  3. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/pyproject.toml +2 -1
  4. boomtick_cli-0.2.1/PKG-INFO +0 -20
  5. boomtick_cli-0.2.1/boomtick_cli.egg-info/PKG-INFO +0 -20
  6. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/README.md +0 -0
  7. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/boomtick_cli.egg-info/SOURCES.txt +0 -0
  8. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/boomtick_cli.egg-info/dependency_links.txt +0 -0
  9. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/boomtick_cli.egg-info/entry_points.txt +0 -0
  10. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/boomtick_cli.egg-info/requires.txt +0 -0
  11. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/boomtick_cli.egg-info/top_level.txt +0 -0
  12. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/__init__.py +0 -0
  13. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/cli-schema.json +0 -0
  14. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/cli.py +0 -0
  15. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/config.py +0 -0
  16. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/constants.py +0 -0
  17. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/daemon.py +0 -0
  18. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/config.js +0 -0
  19. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/index.js +0 -0
  20. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/error_utils.js +0 -0
  21. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/git.js +0 -0
  22. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/result.js +0 -0
  23. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/shell.js +0 -0
  24. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/shell.test.js +0 -0
  25. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/td-cli.js +0 -0
  26. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/lib/test-utils.js +0 -0
  27. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/mcp/definitions.js +0 -0
  28. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/mcp/server.js +0 -0
  29. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/mcp/tools.js +0 -0
  30. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/contract.js +0 -0
  31. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/ddgs.search.js +0 -0
  32. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/ddgs.search.test.js +0 -0
  33. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/ddgs_search.py +0 -0
  34. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.checkout_branch.js +0 -0
  35. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.comment_triage_summary.js +0 -0
  36. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.create_issue.js +0 -0
  37. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.create_issue.test.js +0 -0
  38. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.create_pull_request.js +0 -0
  39. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.get_merge_conflict_files.js +0 -0
  40. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.get_pr.js +0 -0
  41. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.get_pr_diff.js +0 -0
  42. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.issue_comment.js +0 -0
  43. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.issue_update.js +0 -0
  44. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.issue_view.js +0 -0
  45. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.open_replacement_pr.js +0 -0
  46. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.search_open_prs.js +0 -0
  47. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/github.search_open_prs.test.js +0 -0
  48. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/cancel-session.js +0 -0
  49. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/create-session.js +0 -0
  50. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/create-session.test.js +0 -0
  51. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/get-messages.js +0 -0
  52. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/get-messages.test.js +0 -0
  53. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/get-pr.js +0 -0
  54. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/get-pr.test.js +0 -0
  55. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/get-session.js +0 -0
  56. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/list-sessions.js +0 -0
  57. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/send-message.js +0 -0
  58. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/send-message.test.js +0 -0
  59. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/shared.js +0 -0
  60. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/trigger-feedback.js +0 -0
  61. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/jules/trigger-feedback.test.js +0 -0
  62. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.commit_patch.js +0 -0
  63. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.create_branch.js +0 -0
  64. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.create_branch.test.js +0 -0
  65. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.create_repair_branch.js +0 -0
  66. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.get_changed_files.js +0 -0
  67. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.get_command_schema.js +0 -0
  68. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.get_package_scripts.js +0 -0
  69. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.get_package_scripts.test.js +0 -0
  70. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.get_route_map.js +0 -0
  71. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.logs.js +0 -0
  72. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.read_agent_context.js +0 -0
  73. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.read_ci_logs.js +0 -0
  74. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.run_lighthouse.js +0 -0
  75. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.run_playwright.js +0 -0
  76. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/repo.run_tests.js +0 -0
  77. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/dist/tools/types.js +0 -0
  78. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/get_ai_context.py +0 -0
  79. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/handlers/__init__.py +0 -0
  80. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/handlers/command_handler.py +0 -0
  81. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/mcp_server.py +0 -0
  82. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/models.py +0 -0
  83. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/orchestrator.py +0 -0
  84. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/pr_overlap.py +0 -0
  85. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/resources/__init__.py +0 -0
  86. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/resources/build-repo-context.py +0 -0
  87. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/resources/prompt_constants.json +0 -0
  88. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/resources/review_template.md +0 -0
  89. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/resources/ux-audit.config.json +0 -0
  90. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/resources/visual_guidelines.json +0 -0
  91. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/review_read_pass.py +0 -0
  92. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/schema_gen.py +0 -0
  93. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/schema_utils.py +0 -0
  94. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/scope_check.py +0 -0
  95. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/__init__.py +0 -0
  96. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/ai_service.py +0 -0
  97. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/dependency_graph.py +0 -0
  98. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/github.py +0 -0
  99. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/jules.py +0 -0
  100. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/repair_service.py +0 -0
  101. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/vector_store.py +0 -0
  102. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/services/vision_service.py +0 -0
  103. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/td_cli.py +0 -0
  104. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/utils/__init__.py +0 -0
  105. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/utils/git.py +0 -0
  106. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/ux_report.py +0 -0
  107. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/verify_infra.py +0 -0
  108. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/verify_versions.py +0 -0
  109. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/dev_tools/version_utils.py +0 -0
  110. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/setup.cfg +0 -0
  111. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_config.py +0 -0
  112. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_dependency_graph.py +0 -0
  113. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_fail_fast.py +0 -0
  114. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_github_diff_parser.py +0 -0
  115. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_github_no_gh.py +0 -0
  116. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_github_parser.py +0 -0
  117. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_jules_batch_send.py +0 -0
  118. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_labels.py +0 -0
  119. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_latency_mitigation.py +0 -0
  120. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_orchestrator_aggregation.py +0 -0
  121. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_orchestrator_heuristics.py +0 -0
  122. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_parse_comment.py +0 -0
  123. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_plan_issue_audit.py +0 -0
  124. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_pr_overlap.py +0 -0
  125. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_review_template_validation.py +0 -0
  126. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_schema_utils.py +0 -0
  127. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_verify_ci_metrics.py +0 -0
  128. {boomtick_cli-0.2.1 → boomtick_cli-0.2.2}/tests/test_workflow_audit.py +0 -0
@@ -0,0 +1,220 @@
1
+ Metadata-Version: 2.4
2
+ Name: boomtick-cli
3
+ Version: 0.2.2
4
+ Summary: BoomTick CLI — agentic dev-tools for GitHub + AI workflows
5
+ Requires-Python: >=3.8
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: requests>=2.0.0
8
+ Requires-Dist: packaging>=21.3
9
+ Requires-Dist: google-genai
10
+ Requires-Dist: python-dotenv
11
+ Requires-Dist: pydantic
12
+ Requires-Dist: click
13
+ Requires-Dist: PyGithub
14
+ Requires-Dist: semgrep
15
+ Requires-Dist: chromadb>=1.5.9
16
+ Requires-Dist: sentence-transformers>=5.6.0
17
+ Requires-Dist: duckduckgo-search>=6.0.0
18
+ Requires-Dist: setuptools<81.0.0
19
+ Requires-Dist: importlib-resources
20
+ Requires-Dist: langchain-google-genai
21
+ Requires-Dist: langchain-openai
22
+
23
+ # dev-tools
24
+
25
+ Developer tooling for the BoomTick repository. The primary entry point is
26
+ `td-cli`, but agents should always call `boomtick-mcp` Tier 1 tools first —
27
+ `td-cli` is the Tier 2 fallback. See `.agents/AGENTS.md` for the full
28
+ tool hierarchy.
29
+
30
+ ---
31
+
32
+ ## 🚀 One-Step Setup
33
+
34
+ ```bash
35
+ ./setup-agent.sh
36
+ ```
37
+
38
+ This script (symlinked to `dev-tools/setup-agent.sh`) handles system tools,
39
+ Node.js, pnpm, Python dependencies, Playwright, remote origin configuration,
40
+ and git hook registration.
41
+
42
+ ---
43
+
44
+ ## 🔑 Environment Variables
45
+
46
+ | Variable | Required | Purpose |
47
+ | :--- | :--- | :--- |
48
+ | `GITHUB_TOKEN` (string) | **Required** | Auth for `gh` and `td-cli gh ...` commands (PR audits, comments, variables, status checks). Standard for GH Actions. |
49
+ | `GH_TOKEN` (string) | Optional fallback | Legacy authentication variable, deprecated in favor of `GITHUB_TOKEN`. |
50
+ | `GITHUB_REPOSITORY` (`owner/repo`) | Recommended | Ensures deterministic `origin` remote auto-configuration. |
51
+ | `JULES_API_KEY` | Optional | Enables `td-cli agent ...` / `td-cli jules ...` cloud workflows. |
52
+ | `GEMINI_API_KEY` | Optional | Enables Gemini-backed review/audit workflows. |
53
+
54
+ **Secret handling guidance**
55
+
56
+ - GitHub Actions / agent runners: store `GITHUB_TOKEN`, `JULES_API_KEY`, and
57
+ `GEMINI_API_KEY` in repository or org Secrets.
58
+ - Dev containers / local shells: export secrets before running setup/CLI:
59
+
60
+ ```bash
61
+ export GITHUB_TOKEN="<token>"
62
+ export GITHUB_REPOSITORY="owner/repo"
63
+ # optional
64
+ export JULES_API_KEY="<key>"
65
+ export GEMINI_API_KEY="<key>"
66
+ ```
67
+
68
+ **Optional tuning variables**
69
+
70
+ - `SKIP_GIT_HOOKS=1` — skip git hook execution (e.g. in CI).
71
+ - `SKIP_VALIDATION=1` — skip post-setup runtime validation.
72
+ - `NODE_MAJOR` — override Node major used for apt installation (defaults to `24`).
73
+
74
+ ---
75
+
76
+ ## 🧩 Workflow-Specific Setup
77
+
78
+ After `./dev-tools/setup-agent.sh`, use the following workflow-specific setup:
79
+
80
+ #### 1) Standard PR / Review Workflows
81
+
82
+ - Plan a review (fetches context and audits):
83
+ - `td-cli agent plan-review --pr <PR_NUMBER>`
84
+ - Submit audit results (after authoring the review in `pr-review-<PR>.md`):
85
+ - `td-cli gh audit-pr <PR_NUMBER> --submit --execute`
86
+ - Pre-submit quality gate before push/merge:
87
+ - `td-cli gh pre-submit`
88
+
89
+ #### 2) Jules Workflows
90
+
91
+ - Required secret: `JULES_API_KEY`.
92
+ - Optional context env var: `JULES_SOURCE_ID` (if your environment already
93
+ knows the source mapping).
94
+ - Typical commands:
95
+ - `td-cli agent dispatch <BRANCH> "<TASK>"`
96
+ - `td-cli agent fix-ci --pr-number <PR> --execute`
97
+ - `td-cli agent sync`
98
+
99
+ #### 3) Headless / Bot Auditing
100
+
101
+ - For batch auditing open PRs:
102
+ - `td-cli gh audit-pr <PR_NUMBER> --fetch --audit --submit --execute`
103
+ - Ensure `jq`, `gh`, Python deps, and pnpm deps are installed (handled by
104
+ setup script).
105
+
106
+ ---
107
+
108
+ ## 🗂️ Agent Context Index
109
+
110
+ `.agent-context.json` (repository root) is the pre-built index that
111
+ `boomtick-mcp` reads on every tool call. It contains `file_tree`, `cli_schema`,
112
+ and `package_json` metadata — built by `boomtick-pkg/scripts/build-repo-context.py`.
113
+
114
+ **The index is kept fresh automatically** by the git hooks registered during
115
+ `./setup-agent.sh`:
116
+
117
+ - `.githooks/post-checkout` — refreshes on branch switch
118
+ - `.githooks/post-merge` — refreshes on pull/merge
119
+
120
+ To manually refresh:
121
+
122
+ ```bash
123
+ pnpm run agent:prime
124
+ ```
125
+
126
+ If the index is stale, MCP tools fall back to raw filesystem calls, bypassing
127
+ the index and increasing token usage. Always refresh before running reviews or
128
+ dispatching Jules sessions.
129
+
130
+ ---
131
+
132
+ ## 🤖 Agent / Jules GitHub Command Pattern
133
+
134
+ Always use `boomtick-mcp` Tier 1 tools first. `td-cli` is the fallback
135
+ when MCP is unavailable — not the default. See `.agents/AGENTS.md` for the
136
+ full tool mapping table.
137
+
138
+ When `td-cli` must be called directly, read the CLI schema from
139
+ `.agent-context.json` rather than guessing flags or running `--help`:
140
+
141
+ ```bash
142
+ # Extract schema for a specific subcommand before calling it
143
+ cat .agent-context.json | python3 -c "
144
+ import json, sys
145
+ schema = json.load(sys.stdin)
146
+ print(json.dumps(schema['cli_schema']['subcommands']['gh pr-diff'], indent=2))
147
+ "
148
+ ```
149
+
150
+ Prefer repository CLI commands over raw `gh`:
151
+
152
+ ```bash
153
+ # ✅ Preferred
154
+ td-cli gh <repo-command>
155
+
156
+ # ⚠️ Only if td-cli does not expose the operation
157
+ gh <command>
158
+ ```
159
+
160
+ If auth fails, do not run `gh auth login`. Instead, set an environment secret
161
+ named `GITHUB_TOKEN`.
162
+
163
+ ---
164
+
165
+ ## ✅ Verification Commands (Post-Setup)
166
+
167
+ ```bash
168
+ node --version # should match .node-version
169
+ pnpm --version # should be 10.28.2
170
+ td-cli doctor
171
+ pnpm run check:runtime-files
172
+ gh auth status
173
+ ```
174
+
175
+ ---
176
+
177
+ ## 🆘 Troubleshooting
178
+
179
+ ### GitHub CLI not authenticated
180
+
181
+ ```bash
182
+ gh issue create --title "<title>" --body "<details>"
183
+ ```
184
+
185
+ If auth fails, report this exact issue (do not run interactive auth):
186
+
187
+ > GitHub CLI is not authenticated. Please add an environment secret named
188
+ > `GITHUB_TOKEN` with a repo-scoped GitHub token.
189
+
190
+ ### `.agent-context.json` stale or missing
191
+
192
+ ```bash
193
+ pnpm run agent:prime
194
+ ```
195
+
196
+ Then re-read before proceeding with any agent operation.
197
+
198
+ ### pnpm / Node mismatch
199
+
200
+ Stop and report the mismatch. Do not attempt to change runtime versions unless
201
+ explicitly instructed to update the runtime contract.
202
+
203
+ ---
204
+
205
+ ## 🚀 Repository CLI (`td-cli`)
206
+
207
+ `dev-tools/td-cli` is the Tier 2 unified entry point for local repository
208
+ automation. All available subcommands and flags are defined in
209
+ `dev-tools/cli-schema.json` (also embedded in `.agent-context.json` under
210
+ `cli_schema`). That file is the single source of truth — never use `--help`
211
+ to discover flags.
212
+
213
+ Key subcommand groups:
214
+
215
+ | Group | Description |
216
+ | :--- | :--- |
217
+ | `doctor` | Runtime consistency check |
218
+ | `gh` | GitHub operations (PRs, issues, audits, conflicts) |
219
+ | `repo` | Repository operations (CI logs, Playwright) |
220
+ | `agent` / `jules` | Jules agent session management |
@@ -0,0 +1,220 @@
1
+ Metadata-Version: 2.4
2
+ Name: boomtick-cli
3
+ Version: 0.2.2
4
+ Summary: BoomTick CLI — agentic dev-tools for GitHub + AI workflows
5
+ Requires-Python: >=3.8
6
+ Description-Content-Type: text/markdown
7
+ Requires-Dist: requests>=2.0.0
8
+ Requires-Dist: packaging>=21.3
9
+ Requires-Dist: google-genai
10
+ Requires-Dist: python-dotenv
11
+ Requires-Dist: pydantic
12
+ Requires-Dist: click
13
+ Requires-Dist: PyGithub
14
+ Requires-Dist: semgrep
15
+ Requires-Dist: chromadb>=1.5.9
16
+ Requires-Dist: sentence-transformers>=5.6.0
17
+ Requires-Dist: duckduckgo-search>=6.0.0
18
+ Requires-Dist: setuptools<81.0.0
19
+ Requires-Dist: importlib-resources
20
+ Requires-Dist: langchain-google-genai
21
+ Requires-Dist: langchain-openai
22
+
23
+ # dev-tools
24
+
25
+ Developer tooling for the BoomTick repository. The primary entry point is
26
+ `td-cli`, but agents should always call `boomtick-mcp` Tier 1 tools first —
27
+ `td-cli` is the Tier 2 fallback. See `.agents/AGENTS.md` for the full
28
+ tool hierarchy.
29
+
30
+ ---
31
+
32
+ ## 🚀 One-Step Setup
33
+
34
+ ```bash
35
+ ./setup-agent.sh
36
+ ```
37
+
38
+ This script (symlinked to `dev-tools/setup-agent.sh`) handles system tools,
39
+ Node.js, pnpm, Python dependencies, Playwright, remote origin configuration,
40
+ and git hook registration.
41
+
42
+ ---
43
+
44
+ ## 🔑 Environment Variables
45
+
46
+ | Variable | Required | Purpose |
47
+ | :--- | :--- | :--- |
48
+ | `GITHUB_TOKEN` (string) | **Required** | Auth for `gh` and `td-cli gh ...` commands (PR audits, comments, variables, status checks). Standard for GH Actions. |
49
+ | `GH_TOKEN` (string) | Optional fallback | Legacy authentication variable, deprecated in favor of `GITHUB_TOKEN`. |
50
+ | `GITHUB_REPOSITORY` (`owner/repo`) | Recommended | Ensures deterministic `origin` remote auto-configuration. |
51
+ | `JULES_API_KEY` | Optional | Enables `td-cli agent ...` / `td-cli jules ...` cloud workflows. |
52
+ | `GEMINI_API_KEY` | Optional | Enables Gemini-backed review/audit workflows. |
53
+
54
+ **Secret handling guidance**
55
+
56
+ - GitHub Actions / agent runners: store `GITHUB_TOKEN`, `JULES_API_KEY`, and
57
+ `GEMINI_API_KEY` in repository or org Secrets.
58
+ - Dev containers / local shells: export secrets before running setup/CLI:
59
+
60
+ ```bash
61
+ export GITHUB_TOKEN="<token>"
62
+ export GITHUB_REPOSITORY="owner/repo"
63
+ # optional
64
+ export JULES_API_KEY="<key>"
65
+ export GEMINI_API_KEY="<key>"
66
+ ```
67
+
68
+ **Optional tuning variables**
69
+
70
+ - `SKIP_GIT_HOOKS=1` — skip git hook execution (e.g. in CI).
71
+ - `SKIP_VALIDATION=1` — skip post-setup runtime validation.
72
+ - `NODE_MAJOR` — override Node major used for apt installation (defaults to `24`).
73
+
74
+ ---
75
+
76
+ ## 🧩 Workflow-Specific Setup
77
+
78
+ After `./dev-tools/setup-agent.sh`, use the following workflow-specific setup:
79
+
80
+ #### 1) Standard PR / Review Workflows
81
+
82
+ - Plan a review (fetches context and audits):
83
+ - `td-cli agent plan-review --pr <PR_NUMBER>`
84
+ - Submit audit results (after authoring the review in `pr-review-<PR>.md`):
85
+ - `td-cli gh audit-pr <PR_NUMBER> --submit --execute`
86
+ - Pre-submit quality gate before push/merge:
87
+ - `td-cli gh pre-submit`
88
+
89
+ #### 2) Jules Workflows
90
+
91
+ - Required secret: `JULES_API_KEY`.
92
+ - Optional context env var: `JULES_SOURCE_ID` (if your environment already
93
+ knows the source mapping).
94
+ - Typical commands:
95
+ - `td-cli agent dispatch <BRANCH> "<TASK>"`
96
+ - `td-cli agent fix-ci --pr-number <PR> --execute`
97
+ - `td-cli agent sync`
98
+
99
+ #### 3) Headless / Bot Auditing
100
+
101
+ - For batch auditing open PRs:
102
+ - `td-cli gh audit-pr <PR_NUMBER> --fetch --audit --submit --execute`
103
+ - Ensure `jq`, `gh`, Python deps, and pnpm deps are installed (handled by
104
+ setup script).
105
+
106
+ ---
107
+
108
+ ## 🗂️ Agent Context Index
109
+
110
+ `.agent-context.json` (repository root) is the pre-built index that
111
+ `boomtick-mcp` reads on every tool call. It contains `file_tree`, `cli_schema`,
112
+ and `package_json` metadata — built by `boomtick-pkg/scripts/build-repo-context.py`.
113
+
114
+ **The index is kept fresh automatically** by the git hooks registered during
115
+ `./setup-agent.sh`:
116
+
117
+ - `.githooks/post-checkout` — refreshes on branch switch
118
+ - `.githooks/post-merge` — refreshes on pull/merge
119
+
120
+ To manually refresh:
121
+
122
+ ```bash
123
+ pnpm run agent:prime
124
+ ```
125
+
126
+ If the index is stale, MCP tools fall back to raw filesystem calls, bypassing
127
+ the index and increasing token usage. Always refresh before running reviews or
128
+ dispatching Jules sessions.
129
+
130
+ ---
131
+
132
+ ## 🤖 Agent / Jules GitHub Command Pattern
133
+
134
+ Always use `boomtick-mcp` Tier 1 tools first. `td-cli` is the fallback
135
+ when MCP is unavailable — not the default. See `.agents/AGENTS.md` for the
136
+ full tool mapping table.
137
+
138
+ When `td-cli` must be called directly, read the CLI schema from
139
+ `.agent-context.json` rather than guessing flags or running `--help`:
140
+
141
+ ```bash
142
+ # Extract schema for a specific subcommand before calling it
143
+ cat .agent-context.json | python3 -c "
144
+ import json, sys
145
+ schema = json.load(sys.stdin)
146
+ print(json.dumps(schema['cli_schema']['subcommands']['gh pr-diff'], indent=2))
147
+ "
148
+ ```
149
+
150
+ Prefer repository CLI commands over raw `gh`:
151
+
152
+ ```bash
153
+ # ✅ Preferred
154
+ td-cli gh <repo-command>
155
+
156
+ # ⚠️ Only if td-cli does not expose the operation
157
+ gh <command>
158
+ ```
159
+
160
+ If auth fails, do not run `gh auth login`. Instead, set an environment secret
161
+ named `GITHUB_TOKEN`.
162
+
163
+ ---
164
+
165
+ ## ✅ Verification Commands (Post-Setup)
166
+
167
+ ```bash
168
+ node --version # should match .node-version
169
+ pnpm --version # should be 10.28.2
170
+ td-cli doctor
171
+ pnpm run check:runtime-files
172
+ gh auth status
173
+ ```
174
+
175
+ ---
176
+
177
+ ## 🆘 Troubleshooting
178
+
179
+ ### GitHub CLI not authenticated
180
+
181
+ ```bash
182
+ gh issue create --title "<title>" --body "<details>"
183
+ ```
184
+
185
+ If auth fails, report this exact issue (do not run interactive auth):
186
+
187
+ > GitHub CLI is not authenticated. Please add an environment secret named
188
+ > `GITHUB_TOKEN` with a repo-scoped GitHub token.
189
+
190
+ ### `.agent-context.json` stale or missing
191
+
192
+ ```bash
193
+ pnpm run agent:prime
194
+ ```
195
+
196
+ Then re-read before proceeding with any agent operation.
197
+
198
+ ### pnpm / Node mismatch
199
+
200
+ Stop and report the mismatch. Do not attempt to change runtime versions unless
201
+ explicitly instructed to update the runtime contract.
202
+
203
+ ---
204
+
205
+ ## 🚀 Repository CLI (`td-cli`)
206
+
207
+ `dev-tools/td-cli` is the Tier 2 unified entry point for local repository
208
+ automation. All available subcommands and flags are defined in
209
+ `dev-tools/cli-schema.json` (also embedded in `.agent-context.json` under
210
+ `cli_schema`). That file is the single source of truth — never use `--help`
211
+ to discover flags.
212
+
213
+ Key subcommand groups:
214
+
215
+ | Group | Description |
216
+ | :--- | :--- |
217
+ | `doctor` | Runtime consistency check |
218
+ | `gh` | GitHub operations (PRs, issues, audits, conflicts) |
219
+ | `repo` | Repository operations (CI logs, Playwright) |
220
+ | `agent` / `jules` | Jules agent session management |
@@ -4,8 +4,9 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "boomtick-cli"
7
- version = "0.2.1"
7
+ version = "0.2.2"
8
8
  description = "BoomTick CLI — agentic dev-tools for GitHub + AI workflows"
9
+ readme = "README.md"
9
10
  requires-python = ">=3.8"
10
11
  dependencies = [
11
12
  "requests>=2.0.0",
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: boomtick-cli
3
- Version: 0.2.1
4
- Summary: BoomTick CLI — agentic dev-tools for GitHub + AI workflows
5
- Requires-Python: >=3.8
6
- Requires-Dist: requests>=2.0.0
7
- Requires-Dist: packaging>=21.3
8
- Requires-Dist: google-genai
9
- Requires-Dist: python-dotenv
10
- Requires-Dist: pydantic
11
- Requires-Dist: click
12
- Requires-Dist: PyGithub
13
- Requires-Dist: semgrep
14
- Requires-Dist: chromadb>=1.5.9
15
- Requires-Dist: sentence-transformers>=5.6.0
16
- Requires-Dist: duckduckgo-search>=6.0.0
17
- Requires-Dist: setuptools<81.0.0
18
- Requires-Dist: importlib-resources
19
- Requires-Dist: langchain-google-genai
20
- Requires-Dist: langchain-openai
@@ -1,20 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: boomtick-cli
3
- Version: 0.2.1
4
- Summary: BoomTick CLI — agentic dev-tools for GitHub + AI workflows
5
- Requires-Python: >=3.8
6
- Requires-Dist: requests>=2.0.0
7
- Requires-Dist: packaging>=21.3
8
- Requires-Dist: google-genai
9
- Requires-Dist: python-dotenv
10
- Requires-Dist: pydantic
11
- Requires-Dist: click
12
- Requires-Dist: PyGithub
13
- Requires-Dist: semgrep
14
- Requires-Dist: chromadb>=1.5.9
15
- Requires-Dist: sentence-transformers>=5.6.0
16
- Requires-Dist: duckduckgo-search>=6.0.0
17
- Requires-Dist: setuptools<81.0.0
18
- Requires-Dist: importlib-resources
19
- Requires-Dist: langchain-google-genai
20
- Requires-Dist: langchain-openai
File without changes
File without changes