@arii/boomtick-mcp 0.5.0 → 0.6.1

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 (156) hide show
  1. package/.mcp/schemas/boomtick.health.json +5 -0
  2. package/.mcp/schemas/boomtick_health.json +5 -0
  3. package/.mcp/schemas/github.checkout_branch.json +5 -0
  4. package/.mcp/schemas/github.comment_triage_summary.json +5 -0
  5. package/.mcp/schemas/github.create_issue.json +5 -0
  6. package/.mcp/schemas/github.create_pull_request.json +5 -0
  7. package/.mcp/schemas/github.get_merge_conflict_files.json +5 -0
  8. package/.mcp/schemas/github.get_pr.json +5 -0
  9. package/.mcp/schemas/github.get_pr_commits.json +5 -0
  10. package/.mcp/schemas/github.get_pr_diff.json +5 -0
  11. package/.mcp/schemas/github.get_pr_reviews.json +5 -0
  12. package/.mcp/schemas/github.issue_comment.json +5 -0
  13. package/.mcp/schemas/github.issue_update.json +5 -0
  14. package/.mcp/schemas/github.issue_view.json +5 -0
  15. package/.mcp/schemas/github.open_replacement_pr.json +5 -0
  16. package/.mcp/schemas/github.search_open_prs.json +5 -0
  17. package/.mcp/schemas/github_checkout_branch.json +5 -0
  18. package/.mcp/schemas/github_comment_triage_summary.json +5 -0
  19. package/.mcp/schemas/github_create_issue.json +5 -0
  20. package/.mcp/schemas/github_create_pull_request.json +5 -0
  21. package/.mcp/schemas/github_get_merge_conflict_files.json +5 -0
  22. package/.mcp/schemas/github_get_pr.json +5 -0
  23. package/.mcp/schemas/github_get_pr_commits.json +5 -0
  24. package/.mcp/schemas/github_get_pr_diff.json +5 -0
  25. package/.mcp/schemas/github_get_pr_reviews.json +5 -0
  26. package/.mcp/schemas/github_issue_comment.json +5 -0
  27. package/.mcp/schemas/github_issue_update.json +5 -0
  28. package/.mcp/schemas/github_issue_view.json +5 -0
  29. package/.mcp/schemas/github_open_replacement_pr.json +5 -0
  30. package/.mcp/schemas/github_search_open_prs.json +5 -0
  31. package/.mcp/schemas/jules.cancel_session.json +5 -0
  32. package/.mcp/schemas/jules.create_session.json +5 -0
  33. package/.mcp/schemas/jules.get_messages.json +5 -0
  34. package/.mcp/schemas/jules.get_pr.json +5 -0
  35. package/.mcp/schemas/jules.get_session.json +5 -0
  36. package/.mcp/schemas/jules.list_sessions.json +5 -0
  37. package/.mcp/schemas/jules.send_message.json +5 -0
  38. package/.mcp/schemas/jules.trigger_feedback.json +5 -0
  39. package/.mcp/schemas/jules_cancel_session.json +5 -0
  40. package/.mcp/schemas/jules_create_session.json +5 -0
  41. package/.mcp/schemas/jules_get_messages.json +5 -0
  42. package/.mcp/schemas/jules_get_pr.json +5 -0
  43. package/.mcp/schemas/jules_get_session.json +5 -0
  44. package/.mcp/schemas/jules_list_sessions.json +5 -0
  45. package/.mcp/schemas/jules_send_message.json +5 -0
  46. package/.mcp/schemas/jules_trigger_feedback.json +5 -0
  47. package/.mcp/schemas/repo.commit_patch.json +5 -0
  48. package/.mcp/schemas/repo.create_branch.json +5 -0
  49. package/.mcp/schemas/repo.create_repair_branch.json +5 -0
  50. package/.mcp/schemas/repo.get_changed_files.json +5 -0
  51. package/.mcp/schemas/repo.get_command_schema.json +6 -1
  52. package/.mcp/schemas/repo.get_package_scripts.json +5 -0
  53. package/.mcp/schemas/repo.get_workflow_runs.json +5 -0
  54. package/.mcp/schemas/repo.logs.json +5 -0
  55. package/.mcp/schemas/repo.read_agent_context.json +5 -0
  56. package/.mcp/schemas/repo.read_ci_logs.json +5 -0
  57. package/.mcp/schemas/repo.run_tests.json +5 -0
  58. package/.mcp/schemas/repo_commit_patch.json +5 -0
  59. package/.mcp/schemas/repo_create_branch.json +5 -0
  60. package/.mcp/schemas/repo_create_repair_branch.json +5 -0
  61. package/.mcp/schemas/repo_get_changed_files.json +5 -0
  62. package/.mcp/schemas/repo_get_command_schema.json +6 -1
  63. package/.mcp/schemas/repo_get_package_scripts.json +5 -0
  64. package/.mcp/schemas/repo_get_workflow_runs.json +5 -0
  65. package/.mcp/schemas/repo_logs.json +5 -0
  66. package/.mcp/schemas/repo_read_agent_context.json +5 -0
  67. package/.mcp/schemas/repo_read_ci_logs.json +5 -0
  68. package/.mcp/schemas/repo_run_tests.json +5 -0
  69. package/CHANGELOG.md +14 -0
  70. package/actions/ai-review/action.yml +2 -2
  71. package/actions/audit/action.yml +1 -1
  72. package/actions/ci-validate/action.yml +2 -2
  73. package/actions/impact-analysis/action.yml +3 -3
  74. package/actions/run-project-gate/action.yml +5 -5
  75. package/actions/setup/action.yml +1 -1
  76. package/actions/test-build/action.yml +1 -1
  77. package/dist/config.js +1 -1
  78. package/dist/config.test.js +3 -3
  79. package/dist/lib/result.js +4 -0
  80. package/dist/lib/result.test.js +4 -2
  81. package/dist/lib/shell.js +6 -6
  82. package/dist/mcp/definitions.js +73 -2
  83. package/dist/mcp/http.js +91 -0
  84. package/dist/mcp/http.test.js +58 -0
  85. package/dist/mcp/server.js +65 -13
  86. package/dist/mcp/server.test.js +44 -0
  87. package/dist/tools/contract.js +109 -1
  88. package/dist/tools/github.checkout_branch.js +1 -1
  89. package/dist/tools/github.comment_triage_summary.js +1 -1
  90. package/dist/tools/github.create_issue.js +1 -1
  91. package/dist/tools/github.create_issue.test.js +6 -6
  92. package/dist/tools/github.create_pull_request.js +1 -1
  93. package/dist/tools/github.create_pull_request.test.js +4 -4
  94. package/dist/tools/github.get_pr.js +1 -1
  95. package/dist/tools/github.get_pr_commits.js +2 -2
  96. package/dist/tools/github.get_pr_diff.js +1 -1
  97. package/dist/tools/github.get_pr_reviews.js +2 -2
  98. package/dist/tools/github.get_pr_reviews.test.js +9 -9
  99. package/dist/tools/github.issue_comment.js +1 -1
  100. package/dist/tools/github.issue_update.js +1 -1
  101. package/dist/tools/github.issue_view.js +1 -1
  102. package/dist/tools/github.search_open_prs.js +1 -1
  103. package/dist/tools/jules/cancel-session.js +1 -1
  104. package/dist/tools/jules/create-session.test.js +11 -11
  105. package/dist/tools/jules/get-messages.js +1 -1
  106. package/dist/tools/jules/get-messages.test.js +3 -3
  107. package/dist/tools/jules/get-pr.test.js +3 -3
  108. package/dist/tools/jules/list-sessions.js +1 -1
  109. package/dist/tools/jules/send-message.js +1 -1
  110. package/dist/tools/jules/send-message.test.js +5 -5
  111. package/dist/tools/jules/shared.js +4 -4
  112. package/dist/tools/jules/trigger-feedback.js +1 -1
  113. package/dist/tools/jules/trigger-feedback.test.js +5 -5
  114. package/dist/tools/repo.get_command_schema.js +2 -2
  115. package/dist/tools/repo.get_workflow_runs.js +2 -2
  116. package/package.json +1 -1
  117. package/scripts/sync-mcp-schemas.ts +2 -0
  118. package/src/config.test.ts +3 -3
  119. package/src/config.ts +1 -1
  120. package/src/lib/result.test.ts +4 -2
  121. package/src/lib/result.ts +6 -0
  122. package/src/lib/shell.ts +6 -6
  123. package/src/mcp/definitions.ts +76 -3
  124. package/src/mcp/http.test.ts +72 -0
  125. package/src/mcp/http.ts +118 -0
  126. package/src/mcp/server.test.ts +52 -0
  127. package/src/mcp/server.ts +75 -12
  128. package/src/tools/contract.ts +109 -1
  129. package/src/tools/github.checkout_branch.ts +1 -1
  130. package/src/tools/github.comment_triage_summary.ts +1 -1
  131. package/src/tools/github.create_issue.test.ts +6 -6
  132. package/src/tools/github.create_issue.ts +1 -1
  133. package/src/tools/github.create_pull_request.test.ts +4 -4
  134. package/src/tools/github.create_pull_request.ts +1 -1
  135. package/src/tools/github.get_pr.ts +1 -1
  136. package/src/tools/github.get_pr_commits.ts +2 -2
  137. package/src/tools/github.get_pr_diff.ts +1 -1
  138. package/src/tools/github.get_pr_reviews.test.ts +9 -9
  139. package/src/tools/github.get_pr_reviews.ts +2 -2
  140. package/src/tools/github.issue_comment.ts +1 -1
  141. package/src/tools/github.issue_update.ts +1 -1
  142. package/src/tools/github.issue_view.ts +1 -1
  143. package/src/tools/github.search_open_prs.ts +1 -1
  144. package/src/tools/jules/cancel-session.ts +1 -1
  145. package/src/tools/jules/create-session.test.ts +11 -11
  146. package/src/tools/jules/get-messages.test.ts +3 -3
  147. package/src/tools/jules/get-messages.ts +1 -1
  148. package/src/tools/jules/get-pr.test.ts +3 -3
  149. package/src/tools/jules/list-sessions.ts +1 -1
  150. package/src/tools/jules/send-message.test.ts +5 -5
  151. package/src/tools/jules/send-message.ts +1 -1
  152. package/src/tools/jules/shared.ts +4 -4
  153. package/src/tools/jules/trigger-feedback.test.ts +5 -5
  154. package/src/tools/jules/trigger-feedback.ts +1 -1
  155. package/src/tools/repo.get_command_schema.ts +2 -2
  156. package/src/tools/repo.get_workflow_runs.ts +2 -2
@@ -5,5 +5,10 @@
5
5
  "properties": {},
6
6
  "title": "ReadAgentContextInput",
7
7
  "type": "object"
8
+ },
9
+ "outputSchema": {
10
+ "type": "object",
11
+ "properties": {},
12
+ "additionalProperties": true
8
13
  }
9
14
  }
@@ -34,5 +34,10 @@
34
34
  ],
35
35
  "title": "ReadCiLogsInput",
36
36
  "type": "object"
37
+ },
38
+ "outputSchema": {
39
+ "type": "object",
40
+ "properties": {},
41
+ "additionalProperties": true
37
42
  }
38
43
  }
@@ -41,5 +41,10 @@
41
41
  },
42
42
  "title": "RunTestsInput",
43
43
  "type": "object"
44
+ },
45
+ "outputSchema": {
46
+ "type": "object",
47
+ "properties": {},
48
+ "additionalProperties": true
44
49
  }
45
50
  }
@@ -35,5 +35,10 @@
35
35
  ],
36
36
  "title": "CommitPatchInput",
37
37
  "type": "object"
38
+ },
39
+ "outputSchema": {
40
+ "type": "object",
41
+ "properties": {},
42
+ "additionalProperties": true
38
43
  }
39
44
  }
@@ -20,5 +20,10 @@
20
20
  ],
21
21
  "title": "CreateBranchInput",
22
22
  "type": "object"
23
+ },
24
+ "outputSchema": {
25
+ "type": "object",
26
+ "properties": {},
27
+ "additionalProperties": true
23
28
  }
24
29
  }
@@ -33,5 +33,10 @@
33
33
  ],
34
34
  "title": "CreateRepairBranchInput",
35
35
  "type": "object"
36
+ },
37
+ "outputSchema": {
38
+ "type": "object",
39
+ "properties": {},
40
+ "additionalProperties": true
36
41
  }
37
42
  }
@@ -18,5 +18,10 @@
18
18
  },
19
19
  "title": "GetChangedFilesInput",
20
20
  "type": "object"
21
+ },
22
+ "outputSchema": {
23
+ "type": "object",
24
+ "properties": {},
25
+ "additionalProperties": true
21
26
  }
22
27
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "repo_get_command_schema",
3
- "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.",
3
+ "description": "Retrieve a lightweight, targeted schema for a specific td subcommand. Use this instead of reading the entire cli-schema.json to save tokens.",
4
4
  "parameters": {
5
5
  "properties": {
6
6
  "commandPath": {
@@ -14,5 +14,10 @@
14
14
  ],
15
15
  "title": "GetCommandSchemaInput",
16
16
  "type": "object"
17
+ },
18
+ "outputSchema": {
19
+ "type": "object",
20
+ "properties": {},
21
+ "additionalProperties": true
17
22
  }
18
23
  }
@@ -19,5 +19,10 @@
19
19
  },
20
20
  "title": "GetPackageScriptsInput",
21
21
  "type": "object"
22
+ },
23
+ "outputSchema": {
24
+ "type": "object",
25
+ "properties": {},
26
+ "additionalProperties": true
22
27
  }
23
28
  }
@@ -46,5 +46,10 @@
46
46
  },
47
47
  "title": "GetWorkflowRunsInput",
48
48
  "type": "object"
49
+ },
50
+ "outputSchema": {
51
+ "type": "object",
52
+ "properties": {},
53
+ "additionalProperties": true
49
54
  }
50
55
  }
@@ -41,5 +41,10 @@
41
41
  ],
42
42
  "title": "RepoLogsInput",
43
43
  "type": "object"
44
+ },
45
+ "outputSchema": {
46
+ "type": "object",
47
+ "properties": {},
48
+ "additionalProperties": true
44
49
  }
45
50
  }
@@ -5,5 +5,10 @@
5
5
  "properties": {},
6
6
  "title": "ReadAgentContextInput",
7
7
  "type": "object"
8
+ },
9
+ "outputSchema": {
10
+ "type": "object",
11
+ "properties": {},
12
+ "additionalProperties": true
8
13
  }
9
14
  }
@@ -34,5 +34,10 @@
34
34
  ],
35
35
  "title": "ReadCiLogsInput",
36
36
  "type": "object"
37
+ },
38
+ "outputSchema": {
39
+ "type": "object",
40
+ "properties": {},
41
+ "additionalProperties": true
37
42
  }
38
43
  }
@@ -41,5 +41,10 @@
41
41
  },
42
42
  "title": "RunTestsInput",
43
43
  "type": "object"
44
+ },
45
+ "outputSchema": {
46
+ "type": "object",
47
+ "properties": {},
48
+ "additionalProperties": true
44
49
  }
45
50
  }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.6.1](https://github.com/arii/boomtick/compare/mcp-v0.6.0...mcp-v0.6.1) (2026-10-23)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * **mcp:** mount missing handlers for github_get_pr_reviews, github_get_pr_commits, and repo_get_workflow_runs [skip-scope-check] ([#916](https://github.com/arii/boomtick/issues/916)) ([60a2851](https://github.com/arii/boomtick/commit/60a2851a2f2d5ac8010422796573b7ea20bb6767))
9
+
10
+ ## [0.6.0](https://github.com/arii/boomtick/compare/mcp-v0.5.0...mcp-v0.6.0) (2026-10-22)
11
+
12
+
13
+ ### Features
14
+
15
+ * aggregate PRs 908, 893, 895, 896, 897, 898 (canonical td migration, modern MCP, multi-target release, code intelligence, container suggestions) ([#910](https://github.com/arii/boomtick/issues/910)) ([3636191](https://github.com/arii/boomtick/commit/36361910cf0a2d9b8648a951e3338143520bb664))
16
+
3
17
  ## [0.5.0](https://github.com/arii/boomtick/compare/mcp-v0.4.2...mcp-v0.5.0) (2026-10-19)
4
18
 
5
19
 
@@ -1,5 +1,5 @@
1
1
  name: BoomTick AI Review
2
- description: Runs AI code review via td-cli CLI
2
+ description: Runs AI code review via td CLI
3
3
  inputs:
4
4
  pr_number:
5
5
  description: PR number to review
@@ -16,5 +16,5 @@ runs:
16
16
  echo "::error::Invalid PR_NUMBER: must be numeric."
17
17
  exit 1
18
18
  fi
19
- td-cli gh audit-pr "$PR_NUMBER" --fetch --audit --submit --execute
19
+ td gh audit-pr "$PR_NUMBER" --fetch --audit --submit --execute
20
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
- td-cli gh audit-gate
24
+ td 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 td-cli CLI
2
+ description: Runs pre-submit checks via td CLI
3
3
  runs:
4
4
  using: composite
5
5
  steps:
6
6
  - uses: arii/boomtick/mcp/actions/setup@main
7
7
  - name: Pre-submit gate
8
- run: td-cli gh pre-submit
8
+ run: td gh pre-submit
9
9
  shell: bash
@@ -426,7 +426,7 @@ runs:
426
426
  env:
427
427
  GITHUB_TOKEN: ${{ inputs.github_token }}
428
428
  run: |
429
- # Inject custom CLI path for td-cli resolution
429
+ # Inject custom CLI path for td resolution
430
430
  PYTHON_SCRIPTS_PATH=$(python3 -c "import sysconfig; print(sysconfig.get_path('scripts'))")
431
431
  export PATH="$PYTHON_SCRIPTS_PATH:$HOME/.local/bin:/github/home/.local/bin:$PATH"
432
432
 
@@ -436,8 +436,8 @@ runs:
436
436
  fi
437
437
 
438
438
  mkdir -p .boomtick/logs/ai
439
- td-cli gh summary-report >> "$GITHUB_STEP_SUMMARY"
440
- if ! td-cli gh verify-metrics; then
439
+ td gh summary-report >> "$GITHUB_STEP_SUMMARY"
440
+ if ! td gh verify-metrics; then
441
441
  echo "CI Metrics verification failed."
442
442
  exit 1
443
443
  fi
@@ -91,8 +91,8 @@ runs:
91
91
  FILTER_PATH: ${{ steps.resolve-paths.outputs.FILTER_PATH }}
92
92
  run: |
93
93
  if [ "$TARGET" = "boomtick-mcp" ]; then
94
- if command -v td-cli >/dev/null 2>&1; then
95
- PYTHONPATH="$CLI_PATH" td-cli schema --generate
94
+ if command -v td >/dev/null 2>&1; then
95
+ PYTHONPATH="$CLI_PATH" td schema --generate
96
96
  else
97
97
  PYTHONPATH="$CLI_PATH" python3 "$CLI_PATH/dev_tools/schema_gen.py"
98
98
  fi
@@ -139,8 +139,8 @@ runs:
139
139
  run: |
140
140
  echo "::group::Pytest"
141
141
  trap 'echo "::endgroup::"' EXIT
142
- if command -v td-cli >/dev/null 2>&1; then
143
- PYTHONPATH="$CLI_PATH" td-cli test cli
142
+ if command -v td >/dev/null 2>&1; then
143
+ PYTHONPATH="$CLI_PATH" td test cli
144
144
  else
145
145
  PYTHONPATH="$CLI_PATH:$CLI_PATH/dev_tools" python3 -m pytest "$CLI_PATH/tests/"
146
146
  fi
@@ -158,7 +158,7 @@ runs:
158
158
  trap 'echo "::endgroup::"' EXIT
159
159
  export PYTHONPATH="${{ steps.resolve-paths.outputs.CLI_PATH }}:${{ steps.resolve-paths.outputs.CLI_PATH }}/dev_tools"
160
160
  export PATH="$HOME/.local/bin:/github/home/.local/bin:$PATH"
161
- td-cli gh ratchet-any
161
+ td gh ratchet-any
162
162
  env:
163
163
  GITHUB_TOKEN: ${{ inputs.github_token }}
164
164
  shell: bash
@@ -11,5 +11,5 @@ runs:
11
11
  uses: arii/boomtick/.github/actions/setup-workspace@main
12
12
 
13
13
  - name: Verify setup
14
- run: td-cli doctor
14
+ run: td doctor
15
15
  shell: bash
@@ -24,7 +24,7 @@ runs:
24
24
  GITHUB_TOKEN: ${{ inputs.github_token }}
25
25
  run: |
26
26
  export PATH="$HOME/.local/bin:/github/home/.local/bin:$PATH"
27
- td-cli gh bundle-size
27
+ td gh bundle-size
28
28
  shell: bash
29
29
 
30
30
  - name: Run Playwright Smoke Test
package/dist/config.js CHANGED
@@ -37,7 +37,7 @@ export function initializeConfig() {
37
37
  try {
38
38
  // Attempt to load core properties from the Python CLI in the active workspace
39
39
  const cwd = process.env.BOOMTICK_REPO_PATH || process.cwd();
40
- const cmd = `td-cli config view`;
40
+ const cmd = `td config view`;
41
41
  const output = execSync(cmd, {
42
42
  cwd,
43
43
  encoding: "utf-8",
@@ -15,12 +15,12 @@ describe("config", () => {
15
15
  process.env = originalEnv;
16
16
  });
17
17
  describe("initializeConfig", () => {
18
- it("should load dynamic config from td-cli config view using active cwd", async () => {
18
+ it("should load dynamic config from td config view using active cwd", async () => {
19
19
  const mockConfig = { github_repo: "owner/repo", base_branch: "origin/main", vite_base_path: "/app/" };
20
20
  vi.mocked(execSync).mockReturnValue(JSON.stringify(mockConfig));
21
21
  const { initializeConfig } = await import("./config.js");
22
22
  const result = initializeConfig();
23
- expect(execSync).toHaveBeenCalledWith("td-cli config view", expect.objectContaining({
23
+ expect(execSync).toHaveBeenCalledWith("td config view", expect.objectContaining({
24
24
  cwd: process.cwd()
25
25
  }));
26
26
  expect(result).toEqual(mockConfig);
@@ -93,7 +93,7 @@ describe("config", () => {
93
93
  delete process.env.GITHUB_REPOSITORY;
94
94
  delete process.env.GH_REPO;
95
95
  vi.mocked(execSync).mockImplementation(() => {
96
- throw new Error("td-cli failed");
96
+ throw new Error("td failed");
97
97
  });
98
98
  process.env.NODE_ENV = "production";
99
99
  process.env.CI = "false";
@@ -1,4 +1,7 @@
1
1
  export function createSuccessResult(data) {
2
+ const structuredContent = typeof data === "object" && data !== null
3
+ ? data
4
+ : { result: data };
2
5
  return {
3
6
  content: [
4
7
  {
@@ -6,6 +9,7 @@ export function createSuccessResult(data) {
6
9
  text: typeof data === "string" ? data : JSON.stringify(data, null, 2),
7
10
  },
8
11
  ],
12
+ structuredContent,
9
13
  };
10
14
  }
11
15
  export function createErrorResult(message) {
@@ -2,7 +2,7 @@ import { describe, it, expect } from "vitest";
2
2
  import { createSuccessResult, createErrorResult } from "./result.js";
3
3
  describe("result utils", () => {
4
4
  describe("createSuccessResult", () => {
5
- it("should format string data directly without JSON stringifying", () => {
5
+ it("should format string data directly without JSON stringifying and provide structuredContent", () => {
6
6
  const result = createSuccessResult("simple string message");
7
7
  expect(result).toEqual({
8
8
  content: [
@@ -11,10 +11,11 @@ describe("result utils", () => {
11
11
  text: "simple string message",
12
12
  },
13
13
  ],
14
+ structuredContent: { result: "simple string message" },
14
15
  });
15
16
  expect(result.isError).toBeUndefined();
16
17
  });
17
- it("should format object data as pretty-printed JSON string", () => {
18
+ it("should format object data as pretty-printed JSON string and provide structuredContent", () => {
18
19
  const objData = { foo: "bar", count: 42 };
19
20
  const result = createSuccessResult(objData);
20
21
  expect(result).toEqual({
@@ -24,6 +25,7 @@ describe("result utils", () => {
24
25
  text: JSON.stringify(objData, null, 2),
25
26
  },
26
27
  ],
28
+ structuredContent: objData,
27
29
  });
28
30
  expect(result.isError).toBeUndefined();
29
31
  });
package/dist/lib/shell.js CHANGED
@@ -5,7 +5,7 @@ import fs from "fs";
5
5
  export const ALLOWED_COMMANDS = {
6
6
  git: "git",
7
7
  gh: "gh",
8
- "td-cli": "td-cli",
8
+ td: "td",
9
9
  pnpm: "pnpm",
10
10
  ls: "ls",
11
11
  rm: "rm",
@@ -20,16 +20,16 @@ export async function runCommand(cmd, args, options = {}) {
20
20
  const safeCmd = cmd;
21
21
  const start = Date.now();
22
22
  const timeout = options.timeout || 60000;
23
- // Resolve path for 'gh' or 'td-cli' if specified
23
+ // Resolve path for 'gh' or 'td' if specified
24
24
  let finalCmd = ALLOWED_COMMANDS[safeCmd];
25
25
  if (safeCmd === "gh") {
26
26
  finalCmd = config.ghPath;
27
27
  }
28
- else if (safeCmd === "td-cli") {
28
+ else if (safeCmd === "td") {
29
29
  // If we have a repo-relative .venv, prioritize it
30
- const venvBin = path.join(config.repoPath, ".venv", "bin", "td-cli");
31
- const localVenvBin = path.join(process.cwd(), ".venv", "bin", "td-cli");
32
- const parentVenvBin = path.join(config.repoPath, "..", ".venv", "bin", "td-cli");
30
+ const venvBin = path.join(config.repoPath, ".venv", "bin", "td");
31
+ const localVenvBin = path.join(process.cwd(), ".venv", "bin", "td");
32
+ const parentVenvBin = path.join(config.repoPath, "..", ".venv", "bin", "td");
33
33
  // In standalone mode, config.repoPath is the boomtick-pkg root.
34
34
  // We check common venv locations to ensure we call the isolated binary.
35
35
  if (fs.existsSync(venvBin)) {