@arii/boomtick-mcp 0.3.3 → 0.3.6
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/.mcp/schemas/agent.search_ddgs.json +27 -1
- package/.mcp/schemas/boomtick.health.json +12 -1
- package/.mcp/schemas/github.checkout_branch.json +27 -1
- package/.mcp/schemas/github.comment_triage_summary.json +20 -1
- package/.mcp/schemas/github.create_issue.json +40 -1
- package/.mcp/schemas/github.create_pull_request.json +38 -1
- package/.mcp/schemas/github.get_merge_conflict_files.json +20 -1
- package/.mcp/schemas/github.get_pr.json +14 -1
- package/.mcp/schemas/github.get_pr_diff.json +14 -1
- package/.mcp/schemas/github.issue_comment.json +20 -1
- package/.mcp/schemas/github.issue_update.json +105 -1
- package/.mcp/schemas/github.issue_view.json +14 -1
- package/.mcp/schemas/github.open_replacement_pr.json +63 -1
- package/.mcp/schemas/github.search_open_prs.json +47 -1
- package/.mcp/schemas/jules.cancel_session.json +14 -1
- package/.mcp/schemas/jules.create_session.json +40 -1
- package/.mcp/schemas/jules.get_messages.json +14 -1
- package/.mcp/schemas/jules.get_pr.json +14 -1
- package/.mcp/schemas/jules.get_session.json +14 -1
- package/.mcp/schemas/jules.list_sessions.json +32 -1
- package/.mcp/schemas/jules.send_message.json +31 -1
- package/.mcp/schemas/jules.trigger_feedback.json +14 -1
- package/.mcp/schemas/repo.commit_patch.json +35 -1
- package/.mcp/schemas/repo.create_branch.json +20 -1
- package/.mcp/schemas/repo.create_repair_branch.json +33 -1
- package/.mcp/schemas/repo.get_changed_files.json +18 -1
- package/.mcp/schemas/repo.get_command_schema.json +14 -1
- package/.mcp/schemas/repo.get_package_scripts.json +19 -1
- package/.mcp/schemas/repo.get_route_map.json +19 -1
- package/.mcp/schemas/repo.logs.json +27 -1
- package/.mcp/schemas/repo.read_agent_context.json +5 -1
- package/.mcp/schemas/repo.read_ci_logs.json +20 -1
- package/.mcp/schemas/repo.run_lighthouse.json +25 -1
- package/.mcp/schemas/repo.run_playwright.json +32 -1
- package/.mcp/schemas/repo.run_tests.json +41 -1
- package/CHANGELOG.md +23 -0
- package/actions/ai-review/action.yml +8 -3
- package/actions/audit/action.yml +2 -2
- package/actions/ci-validate/action.yml +3 -3
- package/actions/impact-analysis/action.yml +36 -28
- package/actions/lint-typecheck/action.yml +2 -2
- package/actions/run-project-gate/action.yml +11 -3
- package/actions/setup/action.yml +2 -2
- package/actions/test-build/action.yml +2 -2
- package/dist/config.js +2 -4
- package/dist/lib/git.js +1 -3
- package/dist/lib/td-cli.js +27 -0
- package/dist/mcp/server.js +1 -1
- package/dist/tools/contract.js +1085 -151
- package/dist/tools/github.get_pr_diff.js +1 -1
- package/dist/tools/repo.read_agent_context.js +10 -14
- package/dist/tools/repo.read_agent_context.test.js +10 -0
- package/package.json +24 -19
- package/scripts/create_instructions.sh +0 -0
- package/scripts/sync-contracts.ts +216 -6
- package/src/lib/td-cli.ts +35 -0
- package/src/tools/contract.ts +1844 -878
- package/src/tools/github.get_pr_diff.ts +1 -1
- package/src/tools/repo.read_agent_context.test.ts +11 -0
- package/src/tools/repo.read_agent_context.ts +10 -14
- package/start_browsermcp.sh +0 -0
- package/start_github_mcp.sh +0 -0
- package/actions/setup-workspace/action.yml +0 -179
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { loadStandaloneAgentContext } from "../lib/td-cli.js";
|
|
3
|
+
|
|
4
|
+
describe("Standalone Agent Context Loader", () => {
|
|
5
|
+
it("should load agent context without submodule references", () => {
|
|
6
|
+
const context = loadStandaloneAgentContext(process.cwd());
|
|
7
|
+
expect(context).toHaveProperty("packageName");
|
|
8
|
+
expect(context).toHaveProperty("gitCommit");
|
|
9
|
+
expect(context).not.toHaveProperty("submodules");
|
|
10
|
+
});
|
|
11
|
+
});
|
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import fs from "fs/promises";
|
|
3
|
-
import path from "path";
|
|
4
2
|
import { config } from "../config.js";
|
|
3
|
+
import { loadStandaloneAgentContext } from "../lib/td-cli.js";
|
|
5
4
|
|
|
6
5
|
export const ReadAgentContextInputSchema = z.object({});
|
|
7
6
|
|
|
8
7
|
export async function readAgentContextHandler(_args: z.infer<typeof ReadAgentContextInputSchema>) {
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
};
|
|
18
|
-
} catch (e: any) {
|
|
19
|
-
console.error("Failed to read agent context:", e.message);
|
|
20
|
-
throw new Error(`Failed to read agent context from ${contextPath}. Ensure it exists by running 'td-cli context-warm'.`);
|
|
8
|
+
const context = loadStandaloneAgentContext(config.repoPath);
|
|
9
|
+
const result: any = {
|
|
10
|
+
status: "success",
|
|
11
|
+
...context
|
|
12
|
+
};
|
|
13
|
+
delete result.submodules;
|
|
14
|
+
if (result.config) {
|
|
15
|
+
delete result.config.submodules;
|
|
21
16
|
}
|
|
17
|
+
return result;
|
|
22
18
|
}
|
package/start_browsermcp.sh
CHANGED
|
File without changes
|
package/start_github_mcp.sh
CHANGED
|
File without changes
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
name: 'Setup Workspace'
|
|
2
|
-
description: 'Bootstraps the workspace by installing Node.js, Python, and dev-tools'
|
|
3
|
-
inputs:
|
|
4
|
-
setup-node:
|
|
5
|
-
description: "Install Node.js and pnpm"
|
|
6
|
-
required: false
|
|
7
|
-
default: 'true'
|
|
8
|
-
setup-python:
|
|
9
|
-
description: "Install dev-tools (Python)"
|
|
10
|
-
required: false
|
|
11
|
-
default: 'true'
|
|
12
|
-
node-version-file:
|
|
13
|
-
description: "Path to .node-version file"
|
|
14
|
-
required: false
|
|
15
|
-
default: ".node-version"
|
|
16
|
-
pnpm-version:
|
|
17
|
-
description: "Version of pnpm to activate"
|
|
18
|
-
required: false
|
|
19
|
-
default: "10.28.2"
|
|
20
|
-
|
|
21
|
-
runs:
|
|
22
|
-
using: 'composite'
|
|
23
|
-
steps:
|
|
24
|
-
- name: Setup pnpm
|
|
25
|
-
if: inputs.setup-node == 'true'
|
|
26
|
-
uses: pnpm/action-setup@v6 # nosemgrep: yaml.github-actions.security.github-actions-mutable-action-tag.github-actions-mutable-action-tag
|
|
27
|
-
with:
|
|
28
|
-
version: ${{ inputs.pnpm-version }}
|
|
29
|
-
|
|
30
|
-
- name: Get pnpm store directory
|
|
31
|
-
if: inputs.setup-node == 'true'
|
|
32
|
-
id: pnpm-cache
|
|
33
|
-
shell: bash
|
|
34
|
-
run: |
|
|
35
|
-
echo "STORE_PATH=$(pnpm store path)" >> "$GITHUB_OUTPUT"
|
|
36
|
-
|
|
37
|
-
- name: Cache pnpm store
|
|
38
|
-
if: inputs.setup-node == 'true'
|
|
39
|
-
uses: actions/cache@v4.2.0 # nosemgrep: yaml.github-actions.security.github-actions-mutable-action-tag.github-actions-mutable-action-tag
|
|
40
|
-
with:
|
|
41
|
-
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
42
|
-
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
43
|
-
restore-keys: |
|
|
44
|
-
${{ runner.os }}-pnpm-store-
|
|
45
|
-
|
|
46
|
-
- name: Setup Node.js
|
|
47
|
-
if: inputs.setup-node == 'true'
|
|
48
|
-
uses: actions/setup-node@v7 # nosemgrep: yaml.github-actions.security.github-actions-mutable-action-tag.github-actions-mutable-action-tag
|
|
49
|
-
with:
|
|
50
|
-
node-version-file: ${{ inputs.node-version-file }}
|
|
51
|
-
|
|
52
|
-
- name: Enable Corepack
|
|
53
|
-
if: inputs.setup-node == 'true'
|
|
54
|
-
run: corepack enable
|
|
55
|
-
shell: bash
|
|
56
|
-
|
|
57
|
-
- name: Activate pinned pnpm
|
|
58
|
-
if: inputs.setup-node == 'true'
|
|
59
|
-
env:
|
|
60
|
-
PNPM_VERSION: ${{ inputs.pnpm-version }}
|
|
61
|
-
run: corepack prepare pnpm@"$PNPM_VERSION" --activate
|
|
62
|
-
shell: bash
|
|
63
|
-
|
|
64
|
-
- name: Resolve Paths
|
|
65
|
-
id: resolve-paths
|
|
66
|
-
shell: bash
|
|
67
|
-
run: |
|
|
68
|
-
# Use centralized script for CLI path resolution
|
|
69
|
-
if [ -f "scripts/resolve-cli.sh" ]; then
|
|
70
|
-
CLI_DIR=$(bash scripts/resolve-cli.sh | sed "s|$(pwd)/||")
|
|
71
|
-
elif [ -f "boomtick-pkg/scripts/resolve-cli.sh" ]; then
|
|
72
|
-
CLI_DIR=$(bash boomtick-pkg/scripts/resolve-cli.sh | sed "s|$(pwd)/||")
|
|
73
|
-
elif [ -f "boomtick/scripts/resolve-cli.sh" ]; then
|
|
74
|
-
CLI_DIR=$(bash boomtick/scripts/resolve-cli.sh | sed "s|$(pwd)/||")
|
|
75
|
-
elif [ -f "${{ github.action_path }}/../../../scripts/resolve-cli.sh" ]; then
|
|
76
|
-
CLI_DIR=$(REPO_ROOT="${{ github.action_path }}/../../../" bash "${{ github.action_path }}/../../../scripts/resolve-cli.sh" | sed "s|$(pwd)/||")
|
|
77
|
-
elif [ -d "cli" ]; then
|
|
78
|
-
CLI_DIR="cli"
|
|
79
|
-
elif [ -d "boomtick-pkg/cli" ]; then
|
|
80
|
-
CLI_DIR="boomtick-pkg/cli"
|
|
81
|
-
elif [ -d "boomtick/cli" ]; then
|
|
82
|
-
CLI_DIR="boomtick/cli"
|
|
83
|
-
else
|
|
84
|
-
CLI_DIR="cli"
|
|
85
|
-
fi
|
|
86
|
-
|
|
87
|
-
# Validate that the resolved CLI directory exists
|
|
88
|
-
if [ -z "$CLI_DIR" ] || { [ ! -d "$CLI_DIR" ] && [ ! -d "${{ github.action_path }}/../../../$CLI_DIR" ]; }; then
|
|
89
|
-
echo "::error::Could not resolve a valid CLI directory. Resolved: '$CLI_DIR'"
|
|
90
|
-
exit 1
|
|
91
|
-
fi
|
|
92
|
-
|
|
93
|
-
echo "CLI_DIR=$CLI_DIR" >> "$GITHUB_OUTPUT"
|
|
94
|
-
|
|
95
|
-
# Consolidate GITHUB_PATH updates
|
|
96
|
-
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
|
|
97
|
-
echo "/github/home/.local/bin" >> "$GITHUB_PATH"
|
|
98
|
-
|
|
99
|
-
- name: Get pip cache directory
|
|
100
|
-
if: inputs.setup-python == 'true'
|
|
101
|
-
id: pip-cache
|
|
102
|
-
shell: bash
|
|
103
|
-
run: |
|
|
104
|
-
echo "DIR=$(pip cache dir)" >> "$GITHUB_OUTPUT"
|
|
105
|
-
|
|
106
|
-
- name: Cache pip
|
|
107
|
-
if: inputs.setup-python == 'true'
|
|
108
|
-
uses: actions/cache@v4.2.0 # nosemgrep: yaml.github-actions.security.github-actions-mutable-action-tag.github-actions-mutable-action-tag
|
|
109
|
-
with:
|
|
110
|
-
path: ${{ steps.pip-cache.outputs.DIR }}
|
|
111
|
-
key: ${{ runner.os }}-pip-${{ hashFiles('**/pyproject.toml') }}
|
|
112
|
-
restore-keys: |
|
|
113
|
-
${{ runner.os }}-pip-
|
|
114
|
-
|
|
115
|
-
- name: Install dev-tools
|
|
116
|
-
if: inputs.setup-python == 'true'
|
|
117
|
-
env:
|
|
118
|
-
CLI_DIR: ${{ steps.resolve-paths.outputs.CLI_DIR }}
|
|
119
|
-
run: |
|
|
120
|
-
echo "::group::Install dev-tools"
|
|
121
|
-
if [ -f "requirements-dev.txt" ]; then
|
|
122
|
-
pip install -r requirements-dev.txt --break-system-packages
|
|
123
|
-
fi
|
|
124
|
-
pip install -e "$CLI_DIR" --break-system-packages
|
|
125
|
-
|
|
126
|
-
echo "::endgroup::"
|
|
127
|
-
shell: bash
|
|
128
|
-
|
|
129
|
-
- name: Export Environment Variables
|
|
130
|
-
if: inputs.setup-python == 'true'
|
|
131
|
-
id: export-env
|
|
132
|
-
env:
|
|
133
|
-
CLI_DIR: ${{ steps.resolve-paths.outputs.CLI_DIR }}
|
|
134
|
-
run: |
|
|
135
|
-
# Use $(pwd) to get the container-internal path, avoiding host-path leakage from $GITHUB_WORKSPACE
|
|
136
|
-
REPO_DIR=$(pwd)
|
|
137
|
-
if [[ "$CLI_DIR" = /* ]]; then
|
|
138
|
-
CLI_DIR_ABS="$CLI_DIR"
|
|
139
|
-
else
|
|
140
|
-
CLI_DIR_ABS="$REPO_DIR/$CLI_DIR"
|
|
141
|
-
fi
|
|
142
|
-
|
|
143
|
-
# 1. Update PYTHONPATH for subsequent steps
|
|
144
|
-
# Ensure it works even if PYTHONPATH is initially empty
|
|
145
|
-
if [ -z "$PYTHONPATH" ]; then
|
|
146
|
-
echo "PYTHONPATH=$CLI_DIR_ABS" >> "$GITHUB_ENV"
|
|
147
|
-
else
|
|
148
|
-
echo "PYTHONPATH=$CLI_DIR_ABS:$PYTHONPATH" >> "$GITHUB_ENV"
|
|
149
|
-
fi
|
|
150
|
-
echo "cli_dir_abs=$CLI_DIR_ABS" >> "$GITHUB_OUTPUT"
|
|
151
|
-
|
|
152
|
-
echo "✅ Environment configured: PYTHONPATH includes $CLI_DIR_ABS"
|
|
153
|
-
shell: bash
|
|
154
|
-
|
|
155
|
-
- name: Initialize Schemas and Contracts
|
|
156
|
-
if: inputs.setup-node == 'true' && inputs.setup-python == 'true'
|
|
157
|
-
env:
|
|
158
|
-
CLI_DIR_ABS: ${{ steps.export-env.outputs.cli_dir_abs }}
|
|
159
|
-
run: |
|
|
160
|
-
echo "::group::Initialize Schemas and Contracts"
|
|
161
|
-
export PYTHONPATH="$CLI_DIR_ABS:$PYTHONPATH"
|
|
162
|
-
python3 "$CLI_DIR_ABS/dev_tools/schema_gen.py"
|
|
163
|
-
|
|
164
|
-
MCP_DIR="mcp"
|
|
165
|
-
|
|
166
|
-
# Check for sync-contracts script in the resolved MCP directory
|
|
167
|
-
if [ -f "$MCP_DIR/package.json" ] && grep -q "sync-contracts" "$MCP_DIR/package.json"; then
|
|
168
|
-
echo "::group::Run sync-contracts in $MCP_DIR"
|
|
169
|
-
# Ensure dependencies are installed if we're in the MCP directory
|
|
170
|
-
if [ ! -d "$MCP_DIR/node_modules" ]; then
|
|
171
|
-
(cd "$MCP_DIR" && pnpm install --frozen-lockfile --prefer-offline)
|
|
172
|
-
fi
|
|
173
|
-
pnpm --filter "@arii/boomtick-mcp" run sync-contracts || (cd "$MCP_DIR" && pnpm run sync-contracts)
|
|
174
|
-
echo "::endgroup::"
|
|
175
|
-
else
|
|
176
|
-
echo "⚠️ Skipping: sync-contracts script not found in $MCP_DIR/package.json"
|
|
177
|
-
fi
|
|
178
|
-
echo "::endgroup::"
|
|
179
|
-
shell: bash
|