@arii/boomtick-mcp 0.3.3 → 0.3.5

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 (51) hide show
  1. package/.mcp/schemas/agent.search_ddgs.json +27 -1
  2. package/.mcp/schemas/boomtick.health.json +12 -1
  3. package/.mcp/schemas/github.checkout_branch.json +27 -1
  4. package/.mcp/schemas/github.comment_triage_summary.json +20 -1
  5. package/.mcp/schemas/github.create_issue.json +40 -1
  6. package/.mcp/schemas/github.create_pull_request.json +38 -1
  7. package/.mcp/schemas/github.get_merge_conflict_files.json +20 -1
  8. package/.mcp/schemas/github.get_pr.json +14 -1
  9. package/.mcp/schemas/github.get_pr_diff.json +14 -1
  10. package/.mcp/schemas/github.issue_comment.json +20 -1
  11. package/.mcp/schemas/github.issue_update.json +101 -1
  12. package/.mcp/schemas/github.issue_view.json +14 -1
  13. package/.mcp/schemas/github.open_replacement_pr.json +63 -1
  14. package/.mcp/schemas/github.search_open_prs.json +40 -1
  15. package/.mcp/schemas/jules.cancel_session.json +14 -1
  16. package/.mcp/schemas/jules.create_session.json +40 -1
  17. package/.mcp/schemas/jules.get_messages.json +14 -1
  18. package/.mcp/schemas/jules.get_pr.json +14 -1
  19. package/.mcp/schemas/jules.get_session.json +14 -1
  20. package/.mcp/schemas/jules.list_sessions.json +32 -1
  21. package/.mcp/schemas/jules.send_message.json +31 -1
  22. package/.mcp/schemas/jules.trigger_feedback.json +14 -1
  23. package/.mcp/schemas/repo.commit_patch.json +35 -1
  24. package/.mcp/schemas/repo.create_branch.json +20 -1
  25. package/.mcp/schemas/repo.create_repair_branch.json +33 -1
  26. package/.mcp/schemas/repo.get_changed_files.json +18 -1
  27. package/.mcp/schemas/repo.get_command_schema.json +14 -1
  28. package/.mcp/schemas/repo.get_package_scripts.json +19 -1
  29. package/.mcp/schemas/repo.get_route_map.json +19 -1
  30. package/.mcp/schemas/repo.logs.json +27 -1
  31. package/.mcp/schemas/repo.read_agent_context.json +5 -1
  32. package/.mcp/schemas/repo.read_ci_logs.json +20 -1
  33. package/.mcp/schemas/repo.run_lighthouse.json +25 -1
  34. package/.mcp/schemas/repo.run_playwright.json +32 -1
  35. package/.mcp/schemas/repo.run_tests.json +41 -1
  36. package/CHANGELOG.md +14 -0
  37. package/actions/ai-review/action.yml +7 -2
  38. package/actions/audit/action.yml +1 -1
  39. package/actions/ci-validate/action.yml +2 -2
  40. package/actions/impact-analysis/action.yml +26 -25
  41. package/actions/run-project-gate/action.yml +11 -3
  42. package/actions/setup/action.yml +2 -2
  43. package/actions/test-build/action.yml +1 -1
  44. package/dist/config.js +2 -4
  45. package/dist/lib/git.js +1 -3
  46. package/dist/mcp/server.js +1 -1
  47. package/package.json +21 -17
  48. package/scripts/create_instructions.sh +0 -0
  49. package/start_browsermcp.sh +0 -0
  50. package/start_github_mcp.sh +0 -0
  51. package/actions/setup-workspace/action.yml +0 -179
@@ -1 +1,35 @@
1
- {"name":"repo.commit_patch","description":"Commit verified repair changes in a worktree.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "worktreePath": {
4
+ "description": "Path to the worktree where changes are made.",
5
+ "title": "Worktreepath",
6
+ "type": "string"
7
+ },
8
+ "message": {
9
+ "description": "Commit message.",
10
+ "title": "Message",
11
+ "type": "string"
12
+ },
13
+ "allowedFiles": {
14
+ "description": "List of files that are allowed to be committed.",
15
+ "items": {
16
+ "type": "string"
17
+ },
18
+ "title": "Allowedfiles",
19
+ "type": "array"
20
+ },
21
+ "writeMode": {
22
+ "description": "Safety gate: Must be true to perform the commit.",
23
+ "title": "Writemode",
24
+ "type": "boolean"
25
+ }
26
+ },
27
+ "required": [
28
+ "worktreePath",
29
+ "message",
30
+ "allowedFiles",
31
+ "writeMode"
32
+ ],
33
+ "title": "CommitPatchInput",
34
+ "type": "object"
35
+ }
@@ -1 +1,20 @@
1
- {"name":"repo.create_branch","description":"Creates a new clean git branch from a target base branch.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "branchName": {
4
+ "description": "The name of the new branch",
5
+ "title": "Branchname",
6
+ "type": "string"
7
+ },
8
+ "baseBranch": {
9
+ "default": "main",
10
+ "description": "Branch to branch off from",
11
+ "title": "Basebranch",
12
+ "type": "string"
13
+ }
14
+ },
15
+ "required": [
16
+ "branchName"
17
+ ],
18
+ "title": "CreateBranchInput",
19
+ "type": "object"
20
+ }
@@ -1 +1,33 @@
1
- {"name":"repo.create_repair_branch","description":"Creates a fresh worktree and a new repair branch for an existing PR. This isolates the repair work from the main codebase.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "prNumber": {
4
+ "description": "The original pull request number to repair.",
5
+ "title": "Prnumber",
6
+ "type": "integer"
7
+ },
8
+ "repairBranchName": {
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "type": "null"
15
+ }
16
+ ],
17
+ "default": null,
18
+ "description": "Optional custom name for the new repair branch.",
19
+ "title": "Repairbranchname"
20
+ },
21
+ "writeMode": {
22
+ "description": "Safety gate: Must be true to perform branch creation and worktree setup.",
23
+ "title": "Writemode",
24
+ "type": "boolean"
25
+ }
26
+ },
27
+ "required": [
28
+ "prNumber",
29
+ "writeMode"
30
+ ],
31
+ "title": "CreateRepairBranchInput",
32
+ "type": "object"
33
+ }
@@ -1 +1,18 @@
1
- {"name":"repo.get_changed_files","description":"Get the list of changed files between two refs.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "base": {
4
+ "default": "main",
5
+ "description": "The base ref to compare from (default: 'main').",
6
+ "title": "Base",
7
+ "type": "string"
8
+ },
9
+ "head": {
10
+ "default": "HEAD",
11
+ "description": "The head ref to compare to (default: 'HEAD').",
12
+ "title": "Head",
13
+ "type": "string"
14
+ }
15
+ },
16
+ "title": "GetChangedFilesInput",
17
+ "type": "object"
18
+ }
@@ -1 +1,14 @@
1
- {"name":"repo.get_command_schema","description":"Retrieve a lightweight, targeted schema for a specific td-cli subcommand. Use this instead of reading the entire cli-schema.json to save tokens.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "commandPath": {
4
+ "description": "The CLI command path to retrieve the schema for (e.g. 'gh audit-pr')",
5
+ "title": "Commandpath",
6
+ "type": "string"
7
+ }
8
+ },
9
+ "required": [
10
+ "commandPath"
11
+ ],
12
+ "title": "GetCommandSchemaInput",
13
+ "type": "object"
14
+ }
@@ -1 +1,19 @@
1
- {"name":"repo.get_package_scripts","description":"Get the scripts defined in package.json.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "filter": {
4
+ "anyOf": [
5
+ {
6
+ "type": "string"
7
+ },
8
+ {
9
+ "type": "null"
10
+ }
11
+ ],
12
+ "default": null,
13
+ "description": "Optional glob pattern to filter script names.",
14
+ "title": "Filter"
15
+ }
16
+ },
17
+ "title": "GetPackageScriptsInput",
18
+ "type": "object"
19
+ }
@@ -1 +1,19 @@
1
- {"name":"repo.get_route_map","description":"Get the mapping of routes to content files.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "includeStatic": {
4
+ "anyOf": [
5
+ {
6
+ "type": "boolean"
7
+ },
8
+ {
9
+ "type": "null"
10
+ }
11
+ ],
12
+ "default": null,
13
+ "description": "Whether to include static assets in the route map.",
14
+ "title": "Includestatic"
15
+ }
16
+ },
17
+ "title": "GetRouteMapInput",
18
+ "type": "object"
19
+ }
@@ -1 +1,27 @@
1
- {"name":"repo.logs","description":"Stream or grep combined CI logs for all jobs in a pull request.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "prNumber": {
4
+ "description": "The number of the pull request to stream logs for.",
5
+ "title": "Prnumber",
6
+ "type": "integer"
7
+ },
8
+ "grep": {
9
+ "anyOf": [
10
+ {
11
+ "type": "string"
12
+ },
13
+ {
14
+ "type": "null"
15
+ }
16
+ ],
17
+ "default": null,
18
+ "description": "Optional pattern to filter log lines.",
19
+ "title": "Grep"
20
+ }
21
+ },
22
+ "required": [
23
+ "prNumber"
24
+ ],
25
+ "title": "RepoLogsInput",
26
+ "type": "object"
27
+ }
@@ -1 +1,5 @@
1
- {"name":"repo.read_agent_context","description":"Read the full repository index including file tree, CLI schema, and MCP tools.","parameters":null}
1
+ {
2
+ "properties": {},
3
+ "title": "ReadAgentContextInput",
4
+ "type": "object"
5
+ }
@@ -1 +1,20 @@
1
- {"name":"repo.read_ci_logs","description":"Read CI logs for a given pull request.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "prNumber": {
4
+ "description": "The number of the pull request to read logs for.",
5
+ "title": "Prnumber",
6
+ "type": "integer"
7
+ },
8
+ "all": {
9
+ "default": false,
10
+ "description": "Include logs for successful runs (default: false).",
11
+ "title": "All",
12
+ "type": "boolean"
13
+ }
14
+ },
15
+ "required": [
16
+ "prNumber"
17
+ ],
18
+ "title": "ReadCiLogsInput",
19
+ "type": "object"
20
+ }
@@ -1 +1,25 @@
1
- {"name":"repo.run_lighthouse","description":"Run Lighthouse CI audits.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "route": {
4
+ "default": "/",
5
+ "description": "The route to audit (default: '/').",
6
+ "title": "Route",
7
+ "type": "string"
8
+ },
9
+ "worktreePath": {
10
+ "anyOf": [
11
+ {
12
+ "type": "string"
13
+ },
14
+ {
15
+ "type": "null"
16
+ }
17
+ ],
18
+ "default": null,
19
+ "description": "Optional path to the worktree to run the audit in.",
20
+ "title": "Worktreepath"
21
+ }
22
+ },
23
+ "title": "RunLighthouseInput",
24
+ "type": "object"
25
+ }
@@ -1 +1,32 @@
1
- {"name":"repo.run_playwright","description":"Run Playwright E2E tests.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "grep": {
4
+ "anyOf": [
5
+ {
6
+ "type": "string"
7
+ },
8
+ {
9
+ "type": "null"
10
+ }
11
+ ],
12
+ "default": null,
13
+ "description": "Optional pattern to filter tests by name.",
14
+ "title": "Grep"
15
+ },
16
+ "worktreePath": {
17
+ "anyOf": [
18
+ {
19
+ "type": "string"
20
+ },
21
+ {
22
+ "type": "null"
23
+ }
24
+ ],
25
+ "default": null,
26
+ "description": "Optional path to the worktree to run tests in.",
27
+ "title": "Worktreepath"
28
+ }
29
+ },
30
+ "title": "RunPlaywrightInput",
31
+ "type": "object"
32
+ }
@@ -1 +1,41 @@
1
- {"name":"repo.run_tests","description":"Run repository tests and checks.","parameters":null}
1
+ {
2
+ "properties": {
3
+ "commands": {
4
+ "anyOf": [
5
+ {
6
+ "items": {
7
+ "type": "string"
8
+ },
9
+ "type": "array"
10
+ },
11
+ {
12
+ "type": "null"
13
+ }
14
+ ],
15
+ "default": null,
16
+ "description": "Optional list of commands to run (default includes install, lint, test, build).",
17
+ "title": "Commands"
18
+ },
19
+ "timeoutSeconds": {
20
+ "default": 300,
21
+ "description": "Maximum time in seconds to wait for tests (default: 300).",
22
+ "title": "Timeoutseconds",
23
+ "type": "integer"
24
+ },
25
+ "worktreePath": {
26
+ "anyOf": [
27
+ {
28
+ "type": "string"
29
+ },
30
+ {
31
+ "type": "null"
32
+ }
33
+ ],
34
+ "default": null,
35
+ "description": "Optional path to the worktree to run tests in.",
36
+ "title": "Worktreepath"
37
+ }
38
+ },
39
+ "title": "RunTestsInput",
40
+ "type": "object"
41
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.3.5](https://github.com/arii/boomtick/compare/mcp-v0.3.4...mcp-v0.3.5) (2026-08-05)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **ci:** add missing setup and install to impact-analysis action ([#433](https://github.com/arii/boomtick/issues/433)) ([cbfb073](https://github.com/arii/boomtick/commit/cbfb073ee8a817194a9cd147d249debecb152263))
9
+
10
+ ## [0.3.4](https://github.com/arii/boomtick/compare/mcp-v0.3.3...mcp-v0.3.4) (2026-07-21)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **actions:** use proper relative paths for composite actions ([#272](https://github.com/arii/boomtick/issues/272)) ([bba0e52](https://github.com/arii/boomtick/commit/bba0e52d68510e1a9905dc9675b4f74d052a4a2b))
16
+
3
17
  ## [0.3.3](https://github.com/arii/boomtick/compare/mcp-v0.3.2...mcp-v0.3.3) (2026-07-20)
4
18
 
5
19
 
@@ -1,5 +1,5 @@
1
1
  name: BoomTick AI Review
2
- description: Runs AI code review via python3 -m dev_tools.cli CLI
2
+ description: Runs AI code review via td-cli CLI
3
3
  inputs:
4
4
  pr_number:
5
5
  description: PR number to review
@@ -11,5 +11,10 @@ runs:
11
11
  - name: AI review
12
12
  env:
13
13
  PR_NUMBER: ${{ inputs.pr_number }}
14
- run: python3 -m dev_tools.cli gh audit-pr "$PR_NUMBER" --fetch --audit
14
+ run: |
15
+ if [[ ! "$PR_NUMBER" =~ ^[0-9]+$ ]]; then
16
+ echo "::error::Invalid PR_NUMBER: must be numeric."
17
+ exit 1
18
+ fi
19
+ td-cli gh audit-pr "$PR_NUMBER" --fetch --audit
15
20
  shell: bash
@@ -21,7 +21,7 @@ runs:
21
21
  trap 'echo "::endgroup::"' EXIT
22
22
  export PATH="$HOME/.local/bin:/github/home/.local/bin:$PATH"
23
23
  if ! node scripts/detect-antipatterns.mjs; then echo "Audit failed"; exit 1; fi
24
- python3 -m dev_tools.cli gh audit-gate
24
+ td-cli gh audit-gate
25
25
  shell: bash
26
26
 
27
27
  - name: Design Token Compliance
@@ -1,9 +1,9 @@
1
1
  name: BoomTick CI Validate
2
- description: Runs pre-submit checks via python3 -m dev_tools.cli CLI
2
+ description: Runs pre-submit checks via td-cli CLI
3
3
  runs:
4
4
  using: composite
5
5
  steps:
6
6
  - uses: ./mcp/actions/setup
7
7
  - name: Pre-submit gate
8
- run: python3 -m dev_tools.cli gh pre-submit
8
+ run: td-cli gh pre-submit
9
9
  shell: bash
@@ -18,7 +18,18 @@ runs:
18
18
  steps:
19
19
  - uses: ./mcp/actions/setup
20
20
 
21
- - run: pnpm install --frozen-lockfile --prefer-offline
21
+ - name: pnpm install
22
+ run: pnpm install --frozen-lockfile --prefer-offline
23
+ shell: bash
24
+
25
+ - name: Validate PR Number
26
+ env:
27
+ PR_NUMBER: ${{ inputs.pr_number }}
28
+ run: |
29
+ if [[ ! "$PR_NUMBER" =~ ^[0-9]+$ ]]; then
30
+ echo "::error::Invalid PR_NUMBER: must be numeric."
31
+ exit 1
32
+ fi
22
33
  shell: bash
23
34
 
24
35
  - name: Deployment Impact Analysis
@@ -153,24 +164,13 @@ runs:
153
164
  env:
154
165
  VISUAL_DIFF_THRESHOLD: 1.5
155
166
  run: |
156
- SCRIPT_PATH=""
157
- if [ -f "scripts/check-visual-changes.ts" ]; then
158
- SCRIPT_PATH="scripts/check-visual-changes.ts"
159
- elif [ -f "${{ github.action_path }}/../../../scripts/check-visual-changes.ts" ]; then
160
- SCRIPT_PATH="${{ github.action_path }}/../../../scripts/check-visual-changes.ts"
161
- fi
162
-
163
- if [[ -n "$SCRIPT_PATH" && ( "$SCRIPT_PATH" == *"/scripts/check-visual-changes.ts" || "$SCRIPT_PATH" == "scripts/check-visual-changes.ts" ) ]]; then
164
- RESOLVED_PATH=$(realpath "$SCRIPT_PATH")
165
- if [[ -f "$RESOLVED_PATH" && "$RESOLVED_PATH" == *"/scripts/check-visual-changes.ts" ]]; then
166
- echo "Executing check-visual-changes.ts at: $RESOLVED_PATH"
167
- pnpm exec tsx "$RESOLVED_PATH" >> "$GITHUB_OUTPUT"
168
- else
169
- echo "❌ Error: Resolved path validation failed for $RESOLVED_PATH. Defaulting changed_routes=0"
170
- echo "changed_routes=0" >> "$GITHUB_OUTPUT"
171
- fi
167
+ TARGET_PATH="${{ github.action_path }}/../../../scripts/check-visual-changes.ts"
168
+ if [ -f "$TARGET_PATH" ]; then
169
+ RESOLVED_PATH=$(realpath "$TARGET_PATH")
170
+ echo "Executing check-visual-changes.ts at: $RESOLVED_PATH"
171
+ pnpm exec tsx "$RESOLVED_PATH" >> "$GITHUB_OUTPUT"
172
172
  else
173
- echo "⚠️ Skipping: check-visual-changes.ts script not found or validation failed. Defaulting changed_routes=0"
173
+ echo "⚠️ Skipping: check-visual-changes.ts script not found. Defaulting changed_routes=0"
174
174
  echo "changed_routes=0" >> "$GITHUB_OUTPUT"
175
175
  fi
176
176
  shell: bash
@@ -321,12 +321,13 @@ runs:
321
321
  PR_NUMBER: ${{ inputs.pr_number }}
322
322
  GITHUB_REPOSITORY: ${{ github.repository }}
323
323
  run: |
324
- if [ -f "scripts/send-jules-impact.py" ]; then
325
- python3 scripts/send-jules-impact.py
326
- elif [ -f "${{ github.action_path }}/../../../scripts/send-jules-impact.py" ]; then
327
- python3 "${{ github.action_path }}/../../../scripts/send-jules-impact.py"
324
+ TARGET_PATH="${{ github.action_path }}/../../../scripts/send-jules-impact.py"
325
+ if [ -f "$TARGET_PATH" ]; then
326
+ RESOLVED_PATH=$(realpath "$TARGET_PATH")
327
+ echo "Executing send-jules-impact.py at: $RESOLVED_PATH"
328
+ python3 "$RESOLVED_PATH"
328
329
  else
329
- echo "⚠️ Skipping: send-jules-impact.py script not found"
330
+ echo "⚠️ Skipping: send-jules-impact.py script not found."
330
331
  fi
331
332
  shell: bash
332
333
 
@@ -377,8 +378,8 @@ runs:
377
378
  fi
378
379
 
379
380
  mkdir -p .boomtick/logs/ai
380
- python3 -m dev_tools.cli gh summary-report >> "$GITHUB_STEP_SUMMARY"
381
- if ! python3 -m dev_tools.cli gh verify-metrics; then
381
+ td-cli gh summary-report >> "$GITHUB_STEP_SUMMARY"
382
+ if ! td-cli gh verify-metrics; then
382
383
  echo "CI Metrics verification failed."
383
384
  exit 1
384
385
  fi
@@ -98,7 +98,11 @@ runs:
98
98
  FILTER_PATH: ${{ steps.resolve-paths.outputs.FILTER_PATH }}
99
99
  run: |
100
100
  if [ "$TARGET" = "boomtick-mcp" ]; then
101
- PYTHONPATH="$CLI_PATH" python3 "$CLI_PATH/dev_tools/schema_gen.py"
101
+ if command -v td-cli >/dev/null 2>&1; then
102
+ PYTHONPATH="$CLI_PATH" td-cli schema --generate
103
+ else
104
+ PYTHONPATH="$CLI_PATH" python3 "$CLI_PATH/dev_tools/schema_gen.py"
105
+ fi
102
106
  npx tsx "$FILTER_PATH/scripts/sync-contracts.ts"
103
107
  pnpm --filter "$FILTER_PATH" run sync:mcp-schemas
104
108
  fi
@@ -142,7 +146,11 @@ runs:
142
146
  run: |
143
147
  echo "::group::Pytest"
144
148
  trap 'echo "::endgroup::"' EXIT
145
- PYTHONPATH="$CLI_PATH:$CLI_PATH/dev_tools" python3 -m pytest "$CLI_PATH/tests/"
149
+ if command -v td-cli >/dev/null 2>&1; then
150
+ PYTHONPATH="$CLI_PATH" td-cli test cli
151
+ else
152
+ PYTHONPATH="$CLI_PATH:$CLI_PATH/dev_tools" python3 -m pytest "$CLI_PATH/tests/"
153
+ fi
146
154
  shell: bash
147
155
 
148
156
  - name: Check for dead code
@@ -157,7 +165,7 @@ runs:
157
165
  trap 'echo "::endgroup::"' EXIT
158
166
  export PYTHONPATH="${{ steps.resolve-paths.outputs.CLI_PATH }}:${{ steps.resolve-paths.outputs.CLI_PATH }}/dev_tools"
159
167
  export PATH="$HOME/.local/bin:/github/home/.local/bin:$PATH"
160
- python3 -m dev_tools.cli gh ratchet-any
168
+ td-cli gh ratchet-any
161
169
  env:
162
170
  GITHUB_TOKEN: ${{ inputs.github_token }}
163
171
  shell: bash
@@ -8,8 +8,8 @@ runs:
8
8
  shell: bash
9
9
 
10
10
  - name: Setup Workspace
11
- uses: ./mcp/actions/setup-workspace
11
+ uses: ./.github/actions/setup-workspace
12
12
 
13
13
  - name: Verify setup
14
- run: python3 -m dev_tools.cli doctor
14
+ run: td-cli doctor
15
15
  shell: bash
@@ -28,7 +28,7 @@ runs:
28
28
  GITHUB_TOKEN: ${{ inputs.github_token }}
29
29
  run: |
30
30
  export PATH="$HOME/.local/bin:/github/home/.local/bin:$PATH"
31
- python3 -m dev_tools.cli gh bundle-size
31
+ td-cli gh bundle-size
32
32
  shell: bash
33
33
 
34
34
  - name: Run Playwright Smoke Test
package/dist/config.js CHANGED
@@ -18,9 +18,7 @@ function getGithubToken() {
18
18
  return token;
19
19
  }
20
20
  }
21
- catch (e) {
22
- throw e;
23
- }
21
+ catch (e) { /* ignore to allow fallback */ }
24
22
  return undefined;
25
23
  }
26
24
  let cachedDynamicConfig = null;
@@ -44,7 +42,7 @@ export function initializeConfig() {
44
42
  }
45
43
  catch (e) {
46
44
  const message = e instanceof Error ? e.message : String(e);
47
- const errorPrefix = `CRITICAL: Failed to load dynamic config from Python CLI. Ensure Python 3 is installed and boomtick-pkg/cli is in your PYTHONPATH. Details: ${message}`;
45
+ const errorPrefix = `CRITICAL: Failed to load dynamic config from Python CLI. Ensure Python 3 is installed and cli is in your PYTHONPATH. Details: ${message}`;
48
46
  if (process.env.NODE_ENV === "development" || process.env.CI === "true") {
49
47
  throw new Error(errorPrefix);
50
48
  }
package/dist/lib/git.js CHANGED
@@ -18,9 +18,7 @@ export async function createWorktree(branch, prNumber) {
18
18
  await fs.rm(worktreePath, { recursive: true, force: true });
19
19
  await runCommand("git", ["worktree", "prune"]);
20
20
  }
21
- catch (e) {
22
- throw e;
23
- }
21
+ catch (e) { /* ignore if no previous worktree */ }
24
22
  const result = await runCommand("git", ["worktree", "add", "-b", `repair-pr-${prNumber}-${Date.now()}`, worktreePath, branch]);
25
23
  if (result.exitCode !== 0) {
26
24
  throw new Error(`Failed to create worktree: ${result.stderr}`);
@@ -69,7 +69,7 @@ export class BoomtickMCPServer {
69
69
  });
70
70
  this.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
71
71
  const name = request.params.name;
72
- const agentsDir = path.resolve(config.repoPath, "boomtick-pkg/mcp/src/agents");
72
+ const agentsDir = path.resolve(config.repoPath, "mcp/src/agents");
73
73
  // nosemgrep
74
74
  const promptPath = path.resolve(agentsDir, `${name}.prompt.md`);
75
75
  if (!promptPath.startsWith(agentsDir + path.sep)) {
package/package.json CHANGED
@@ -1,7 +1,12 @@
1
1
  {
2
2
  "name": "@arii/boomtick-mcp",
3
- "version": "0.3.3",
3
+ "version": "0.3.5",
4
4
  "description": "Boomtick MCP Guide: PR Rescue + Merge Conflict Agent",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/arii/boomtick.git",
8
+ "directory": "mcp"
9
+ },
5
10
  "publishConfig": {
6
11
  "access": "public"
7
12
  },
@@ -10,26 +15,11 @@
10
15
  "bin": {
11
16
  "boomtick-mcp": "dist/index.js"
12
17
  },
13
- "scripts": {
14
- "build": "tsx scripts/sync-contracts.ts && tsc && shx cp src/tools/ddgs_search.py dist/tools/ && tsx scripts/sync-mcp-schemas.ts",
15
- "watch": "tsc -w",
16
- "start": "node dist/index.js",
17
- "test": "tsx scripts/sync-contracts.ts && vitest run",
18
- "run-evals": "node dist/evals/run-evals.js",
19
- "sync:mcp-schemas": "tsx scripts/sync-mcp-schemas.ts",
20
- "release:patch": "pnpm version patch",
21
- "release:minor": "pnpm version minor",
22
- "release:major": "pnpm version major",
23
- "sync-contracts": "tsx scripts/sync-contracts.ts",
24
- "type-check": "tsx scripts/sync-contracts.ts && tsc",
25
- "lint": "tsx scripts/sync-contracts.ts && tsc --noEmit"
26
- },
27
18
  "dependencies": {
28
19
  "@modelcontextprotocol/sdk": "^1.6.0",
29
20
  "dotenv": "^17.4.2",
30
21
  "zod": "^4.4.3"
31
22
  },
32
- "packageManager": "pnpm@10.28.2",
33
23
  "engines": {
34
24
  "node": "24.x",
35
25
  "pnpm": "10.28.2"
@@ -41,5 +31,19 @@
41
31
  "shx": "^0.4.0",
42
32
  "typescript": "^5.7.3",
43
33
  "vitest": "^4.1.9"
34
+ },
35
+ "scripts": {
36
+ "build": "tsx scripts/sync-contracts.ts && tsc && shx cp src/tools/ddgs_search.py dist/tools/ && tsx scripts/sync-mcp-schemas.ts",
37
+ "watch": "tsc -w",
38
+ "start": "node dist/index.js",
39
+ "test": "tsx scripts/sync-contracts.ts && vitest run",
40
+ "run-evals": "node dist/evals/run-evals.js",
41
+ "sync:mcp-schemas": "tsx scripts/sync-mcp-schemas.ts",
42
+ "release:patch": "pnpm version patch",
43
+ "release:minor": "pnpm version minor",
44
+ "release:major": "pnpm version major",
45
+ "sync-contracts": "tsx scripts/sync-contracts.ts",
46
+ "type-check": "tsx scripts/sync-contracts.ts && tsc",
47
+ "lint": "tsx scripts/sync-contracts.ts && tsc --noEmit"
44
48
  }
45
- }
49
+ }
File without changes
File without changes
File without changes