@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
|
@@ -1 +1,14 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"properties": {
|
|
3
|
+
"sessionId": {
|
|
4
|
+
"description": "The unique ID of the Jules session.",
|
|
5
|
+
"title": "Sessionid",
|
|
6
|
+
"type": "string"
|
|
7
|
+
}
|
|
8
|
+
},
|
|
9
|
+
"required": [
|
|
10
|
+
"sessionId"
|
|
11
|
+
],
|
|
12
|
+
"title": "JulesSessionIdInput",
|
|
13
|
+
"type": "object"
|
|
14
|
+
}
|
|
@@ -1 +1,35 @@
|
|
|
1
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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,20 @@
|
|
|
1
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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
|
-
{
|
|
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,28 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.3.6](https://github.com/arii/boomtick/compare/mcp-v0.3.5...mcp-v0.3.6) (2026-08-13)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* **ai:** add gemini fallback logic to AIClient ([5cc87cc](https://github.com/arii/boomtick/commit/5cc87cc79e65df79db98bc27e679d14ffdd2d18d))
|
|
9
|
+
* **ai:** add gemini fallback logic to AIClient ([3ba37ec](https://github.com/arii/boomtick/commit/3ba37ec50a7447a9517e9f0029ff05ee01adf4d8))
|
|
10
|
+
* resolve td-cli not found in impact-analysis CI action ([#508](https://github.com/arii/boomtick/issues/508)) ([702643f](https://github.com/arii/boomtick/commit/702643f9d0d2447ae7baf20d22d553a7dfbae777))
|
|
11
|
+
|
|
12
|
+
## [0.3.5](https://github.com/arii/boomtick/compare/mcp-v0.3.4...mcp-v0.3.5) (2026-08-05)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
* **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))
|
|
18
|
+
|
|
19
|
+
## [0.3.4](https://github.com/arii/boomtick/compare/mcp-v0.3.3...mcp-v0.3.4) (2026-07-21)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
### Bug Fixes
|
|
23
|
+
|
|
24
|
+
* **actions:** use proper relative paths for composite actions ([#272](https://github.com/arii/boomtick/issues/272)) ([bba0e52](https://github.com/arii/boomtick/commit/bba0e52d68510e1a9905dc9675b4f74d052a4a2b))
|
|
25
|
+
|
|
3
26
|
## [0.3.3](https://github.com/arii/boomtick/compare/mcp-v0.3.2...mcp-v0.3.3) (2026-07-20)
|
|
4
27
|
|
|
5
28
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
name: BoomTick AI Review
|
|
2
|
-
description: Runs AI code review via
|
|
2
|
+
description: Runs AI code review via td-cli CLI
|
|
3
3
|
inputs:
|
|
4
4
|
pr_number:
|
|
5
5
|
description: PR number to review
|
|
@@ -7,9 +7,14 @@ inputs:
|
|
|
7
7
|
runs:
|
|
8
8
|
using: composite
|
|
9
9
|
steps:
|
|
10
|
-
- uses:
|
|
10
|
+
- uses: arii/boomtick/mcp/actions/setup@main
|
|
11
11
|
- name: AI review
|
|
12
12
|
env:
|
|
13
13
|
PR_NUMBER: ${{ inputs.pr_number }}
|
|
14
|
-
run:
|
|
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
|
package/actions/audit/action.yml
CHANGED
|
@@ -7,7 +7,7 @@ inputs:
|
|
|
7
7
|
runs:
|
|
8
8
|
using: composite
|
|
9
9
|
steps:
|
|
10
|
-
- uses:
|
|
10
|
+
- uses: arii/boomtick/mcp/actions/setup@main
|
|
11
11
|
|
|
12
12
|
- name: Install dependencies
|
|
13
13
|
run: pnpm install --frozen-lockfile --prefer-offline
|
|
@@ -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
|
-
|
|
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
|
|
2
|
+
description: Runs pre-submit checks via td-cli CLI
|
|
3
3
|
runs:
|
|
4
4
|
using: composite
|
|
5
5
|
steps:
|
|
6
|
-
- uses:
|
|
6
|
+
- uses: arii/boomtick/mcp/actions/setup@main
|
|
7
7
|
- name: Pre-submit gate
|
|
8
|
-
run:
|
|
8
|
+
run: td-cli gh pre-submit
|
|
9
9
|
shell: bash
|
|
@@ -16,9 +16,23 @@ inputs:
|
|
|
16
16
|
runs:
|
|
17
17
|
using: composite
|
|
18
18
|
steps:
|
|
19
|
-
- uses:
|
|
19
|
+
- uses: arii/boomtick/mcp/actions/setup@main
|
|
20
20
|
|
|
21
|
-
-
|
|
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 [[ -z "$PR_NUMBER" ]]; then
|
|
30
|
+
exit 0
|
|
31
|
+
fi
|
|
32
|
+
if [[ ! "$PR_NUMBER" =~ ^[0-9]+$ ]]; then
|
|
33
|
+
echo "::error::Invalid PR_NUMBER: must be numeric."
|
|
34
|
+
exit 1
|
|
35
|
+
fi
|
|
22
36
|
shell: bash
|
|
23
37
|
|
|
24
38
|
- name: Deployment Impact Analysis
|
|
@@ -153,24 +167,13 @@ runs:
|
|
|
153
167
|
env:
|
|
154
168
|
VISUAL_DIFF_THRESHOLD: 1.5
|
|
155
169
|
run: |
|
|
156
|
-
|
|
157
|
-
if [ -f "
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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
|
|
170
|
+
TARGET_PATH="${{ github.action_path }}/../../../scripts/check-visual-changes.ts"
|
|
171
|
+
if [ -f "$TARGET_PATH" ]; then
|
|
172
|
+
RESOLVED_PATH=$(realpath "$TARGET_PATH")
|
|
173
|
+
echo "Executing check-visual-changes.ts at: $RESOLVED_PATH"
|
|
174
|
+
pnpm exec tsx "$RESOLVED_PATH" >> "$GITHUB_OUTPUT"
|
|
172
175
|
else
|
|
173
|
-
echo "⚠️ Skipping: check-visual-changes.ts script not found
|
|
176
|
+
echo "⚠️ Skipping: check-visual-changes.ts script not found. Defaulting changed_routes=0"
|
|
174
177
|
echo "changed_routes=0" >> "$GITHUB_OUTPUT"
|
|
175
178
|
fi
|
|
176
179
|
shell: bash
|
|
@@ -275,7 +278,7 @@ runs:
|
|
|
275
278
|
|
|
276
279
|
if [[ "$VERDICT" == "warn" ]]; then
|
|
277
280
|
# Only allow specific safe-skip reasons for warnings to pass CI
|
|
278
|
-
IS_TRUNCATED=$(jq -r '.isTruncated //
|
|
281
|
+
IS_TRUNCATED=$(jq -r '.isTruncated // "false"' "$f" 2>/dev/null)
|
|
279
282
|
SKIP_REASON=$(jq -r '.skipReason // "NONE"' "$f" 2>/dev/null)
|
|
280
283
|
|
|
281
284
|
if [[ "$IS_TRUNCATED" == "true" || "$SKIP_REASON" == *"MISSING_API_KEY"* || "$SKIP_REASON" == *"RATE_LIMIT"* || "$SKIP_REASON" == *"UNHANDLED_ERROR"* || "$SKIP_REASON" == *"TRUNCATED"* || "$SKIP_REASON" == *"PARSE_ERROR"* || "$SKIP_REASON" == "NONE" ]]; then
|
|
@@ -321,18 +324,19 @@ runs:
|
|
|
321
324
|
PR_NUMBER: ${{ inputs.pr_number }}
|
|
322
325
|
GITHUB_REPOSITORY: ${{ github.repository }}
|
|
323
326
|
run: |
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
327
|
+
TARGET_PATH="${{ github.action_path }}/../../../scripts/send-jules-impact.py"
|
|
328
|
+
if [ -f "$TARGET_PATH" ]; then
|
|
329
|
+
RESOLVED_PATH=$(realpath "$TARGET_PATH")
|
|
330
|
+
echo "Executing send-jules-impact.py at: $RESOLVED_PATH"
|
|
331
|
+
python3 "$RESOLVED_PATH"
|
|
328
332
|
else
|
|
329
|
-
echo "⚠️ Skipping: send-jules-impact.py script not found"
|
|
333
|
+
echo "⚠️ Skipping: send-jules-impact.py script not found."
|
|
330
334
|
fi
|
|
331
335
|
shell: bash
|
|
332
336
|
|
|
333
337
|
- name: Update Impact Analysis Feedback (Final Result)
|
|
334
338
|
if: always()
|
|
335
|
-
uses:
|
|
339
|
+
uses: arii/boomtick/mcp/actions/update-pr-comment@main
|
|
336
340
|
with:
|
|
337
341
|
github_token: ${{ inputs.github_token }}
|
|
338
342
|
status_line: '✅ **Impact Analysis Complete**'
|
|
@@ -371,14 +375,18 @@ runs:
|
|
|
371
375
|
env:
|
|
372
376
|
GITHUB_TOKEN: ${{ inputs.github_token }}
|
|
373
377
|
run: |
|
|
378
|
+
# Inject custom CLI path for td-cli resolution
|
|
379
|
+
PYTHON_SCRIPTS_PATH=$(python3 -c "import sysconfig; print(sysconfig.get_path('scripts'))")
|
|
380
|
+
export PATH="$PYTHON_SCRIPTS_PATH:$HOME/.local/bin:/github/home/.local/bin:$PATH"
|
|
381
|
+
|
|
374
382
|
# Resolve CLI dir for PYTHONPATH
|
|
375
383
|
if [ -d "cli" ]; then
|
|
376
384
|
export PYTHONPATH="cli:$PYTHONPATH"
|
|
377
385
|
fi
|
|
378
386
|
|
|
379
387
|
mkdir -p .boomtick/logs/ai
|
|
380
|
-
|
|
381
|
-
if !
|
|
388
|
+
td-cli gh summary-report >> "$GITHUB_STEP_SUMMARY"
|
|
389
|
+
if ! td-cli gh verify-metrics; then
|
|
382
390
|
echo "CI Metrics verification failed."
|
|
383
391
|
exit 1
|
|
384
392
|
fi
|
|
@@ -10,10 +10,10 @@ inputs:
|
|
|
10
10
|
runs:
|
|
11
11
|
using: composite
|
|
12
12
|
steps:
|
|
13
|
-
- uses:
|
|
13
|
+
- uses: arii/boomtick/mcp/actions/setup@main
|
|
14
14
|
|
|
15
15
|
- name: Run Project Gate
|
|
16
|
-
uses:
|
|
16
|
+
uses: arii/boomtick/mcp/actions/run-project-gate@main
|
|
17
17
|
with:
|
|
18
18
|
target: ${{ inputs.target }}
|
|
19
19
|
github_token: ${{ inputs.github_token }}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
168
|
+
td-cli gh ratchet-any
|
|
161
169
|
env:
|
|
162
170
|
GITHUB_TOKEN: ${{ inputs.github_token }}
|
|
163
171
|
shell: bash
|
package/actions/setup/action.yml
CHANGED
|
@@ -11,7 +11,7 @@ inputs:
|
|
|
11
11
|
runs:
|
|
12
12
|
using: composite
|
|
13
13
|
steps:
|
|
14
|
-
- uses:
|
|
14
|
+
- uses: arii/boomtick/mcp/actions/setup@main
|
|
15
15
|
|
|
16
16
|
- name: pnpm install
|
|
17
17
|
run: pnpm install --frozen-lockfile --prefer-offline
|
|
@@ -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
|
-
|
|
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
|
|
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
|
}
|