mastracode 0.36.0-alpha.8 → 0.36.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,117 @@
1
1
  # mastracode
2
2
 
3
+ ## 0.36.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Added review and working modes to MastraCode GitHub subscriptions. ([#21542](https://github.com/mastra-ai/mastra/pull/21542))
8
+
9
+ ```text
10
+ /github subscribe 42 --mode review
11
+ ```
12
+
13
+ - Made language-server (LSP) support opt-in in Mastra Code. By default Mastra Code no longer checks for LSP dependencies, starts language servers, or offers the lsp_inspect tool to the agent. Turn it on by adding "lsp": true (or an LSP config object) to your settings.json; "lsp": false is now also accepted and preserved. ([#22126](https://github.com/mastra-ai/mastra/pull/22126))
14
+
15
+ ### Patch Changes
16
+
17
+ - Added browser-safe thinking command helpers so Mastra Code interfaces can share command parsing, model capabilities, and default resolution. ([#22198](https://github.com/mastra-ai/mastra/pull/22198))
18
+
19
+ ```ts
20
+ import { parseThinkCommand, resolveDefaultThinkingLevel } from '@mastra/code-sdk/thinking';
21
+
22
+ const action = parseThinkCommand('high');
23
+ const fallback = resolveDefaultThinkingLevel({ globalDefault: 'medium', modeDefaults: { plan: 'high' } }, 'plan');
24
+ ```
25
+
26
+ - Improved the provider device-code sign-in dialog. The code is now the main element with an inline copy button, and copy failures show an error instead of failing silently. ([#22186](https://github.com/mastra-ai/mastra/pull/22186))
27
+
28
+ - Improved long-session terminal performance by coalescing background renders, drawing status animations without re-rendering the full component tree, preserving completed component caches, and retaining a smaller rendered scrollback. ([#22073](https://github.com/mastra-ai/mastra/pull/22073))
29
+
30
+ - Added a Web search provider setting to /settings for choosing the default web_search/web_extract provider (Tavily or Parallel). Every provider stays visible in the selector; ones missing their API key are marked unavailable with the env var to set, and Auto uses the first configured key. ([#22216](https://github.com/mastra-ai/mastra/pull/22216))
31
+
32
+ ```bash
33
+ PARALLEL_API_KEY=your-api-key npx mastracode
34
+ # then: /settings → Web search provider → Parallel
35
+ # and in chat: "Use web_search to find the latest Mastra release"
36
+ ```
37
+
38
+ - Add a `/context` command (alias `/ctx`) to Mastra Code that reports what is occupying the context window. ([#22131](https://github.com/mastra-ai/mastra/pull/22131))
39
+
40
+ The report separates the startup context — system prompt, AGENTS.md/CLAUDE.md instructions with their source paths, the skills catalog, and MCP tool definitions rolled up per server — from context that accumulates during the session, namely the conversation itself and any observation memory injected into it. Each line carries an estimated token count and its share of the audited total, so it is possible to see which server, instruction file, or skill set is worth pruning.
41
+
42
+ The audit reports only sizes and labels, never the audited content, and is printed to the terminal without being added to the conversation, so running it does not enlarge the context it describes.
43
+
44
+ To support exact measurement, `@mastra/core` now exports `formatSkillsCatalog`, the pure formatter behind the skills processor's `<available_skills>` block, and `@mastra/code-sdk` exposes the assembled system prompt as labeled sections.
45
+
46
+ - Made the slash-command autocomplete dropdown in Mastra Code compact and scannable when many skills are installed. Only the highlighted item now shows its full wrapped description; other items stay on a single line with a truncated description. Fixes https://github.com/mastra-ai/mastra/issues/21967 ([#22101](https://github.com/mastra-ai/mastra/pull/22101))
47
+
48
+ - Fixed background system messages (such as MCP server connection and authentication logs) pushing an active prompt off-screen during startup. Update prompts and plan approvals now stay anchored at the bottom of the conversation while background output is inserted above them, so the prompt stays visible and usable. ([#22109](https://github.com/mastra-ai/mastra/pull/22109))
49
+
50
+ - Updated dependencies [[`79f04a7`](https://github.com/mastra-ai/mastra/commit/79f04a7f6c6829da541139f638f2f1d267916e08), [`65edab1`](https://github.com/mastra-ai/mastra/commit/65edab1c233d17b8f163bad12fca410d0e6f16b1), [`db6940e`](https://github.com/mastra-ai/mastra/commit/db6940ea63b76df2bc0a7c105a493342b9eaf0ec), [`1e47b75`](https://github.com/mastra-ai/mastra/commit/1e47b7520cab4cfaa8daed52f17e2e6d14ff7539), [`ab20a38`](https://github.com/mastra-ai/mastra/commit/ab20a38d0275f8d85e0f3833bd87ef487bcc609f), [`fd4d5fe`](https://github.com/mastra-ai/mastra/commit/fd4d5fe4f943699b85db5e74404f190d5a6b8c2a), [`c5eaec5`](https://github.com/mastra-ai/mastra/commit/c5eaec5a860d80d0e3805e67db0414b87ac8cbed), [`ae8790c`](https://github.com/mastra-ai/mastra/commit/ae8790c4bfaa088d2ab279d1dcc06f326b9fd109), [`2c85f42`](https://github.com/mastra-ai/mastra/commit/2c85f428e04ccd63ea31a7ec80b5b327afdad555), [`04a815f`](https://github.com/mastra-ai/mastra/commit/04a815fc8971d29e97fcdcc5008a1eb472fc00ff), [`11bbeb9`](https://github.com/mastra-ai/mastra/commit/11bbeb9b108ef2264e05acefc6dafb9cbb342921), [`48ef1f1`](https://github.com/mastra-ai/mastra/commit/48ef1f1d24eedafbb07f64e659a81b52b67b8bf6), [`aa3a85d`](https://github.com/mastra-ai/mastra/commit/aa3a85daf094c683bb97efdf4b6a696d2e474af5), [`15f92d0`](https://github.com/mastra-ai/mastra/commit/15f92d02bcacac7506346709d88b8bf11ae11695), [`d29d06f`](https://github.com/mastra-ai/mastra/commit/d29d06fe00bbd35b4571150ea04c59d2ed783c71), [`f9172b3`](https://github.com/mastra-ai/mastra/commit/f9172b35de085f9101348eeb60d7d4712505ed8f), [`e737014`](https://github.com/mastra-ai/mastra/commit/e737014e0fc7035759762bb5b48baef1d6c0f6a7), [`dfb7efa`](https://github.com/mastra-ai/mastra/commit/dfb7efa19e348b5a788be2d954362cbae12379d6), [`e6516df`](https://github.com/mastra-ai/mastra/commit/e6516dfcdae4f4ac0e7971d84359a81385ee602f), [`1a485f3`](https://github.com/mastra-ai/mastra/commit/1a485f3538f5ec64d58bd8b5e1e99de0c695c87b), [`0d37487`](https://github.com/mastra-ai/mastra/commit/0d37487d9f349388a3f1cef6a536cf9dcc4b6273), [`8661d7d`](https://github.com/mastra-ai/mastra/commit/8661d7d7179f0a024456aabdd8679bcecd09ac28), [`dbbfeb8`](https://github.com/mastra-ai/mastra/commit/dbbfeb85ec949dc9ebc0755e1ad262e4f5eba8db), [`575e343`](https://github.com/mastra-ai/mastra/commit/575e343900451021d96110916497d334af7bc252), [`0b2a3d1`](https://github.com/mastra-ai/mastra/commit/0b2a3d1783875c5b97b7b36ab3d03d7360e0dde7), [`8661d7d`](https://github.com/mastra-ai/mastra/commit/8661d7d7179f0a024456aabdd8679bcecd09ac28), [`6bb5d71`](https://github.com/mastra-ai/mastra/commit/6bb5d7193fe9166b219f0fccae17db7a5ae86e65), [`3cc9d00`](https://github.com/mastra-ai/mastra/commit/3cc9d00b2b4333e0377a5e9df5eff92c17ce7630), [`cacb839`](https://github.com/mastra-ai/mastra/commit/cacb8392d9e74189b56d857290b0615f98a2683d), [`57de7d6`](https://github.com/mastra-ai/mastra/commit/57de7d644ba7146edb4e9e6111ec4fa98c3a59e9), [`c8e4cea`](https://github.com/mastra-ai/mastra/commit/c8e4ceac9a390d78c8327dff3cdb2861dd71957f), [`ed01e9a`](https://github.com/mastra-ai/mastra/commit/ed01e9a807514a904374bf687a7b8f18750f6f78), [`b47b26e`](https://github.com/mastra-ai/mastra/commit/b47b26e6fe95cb8a3482be2c5e52de157fe59d0b), [`0d37487`](https://github.com/mastra-ai/mastra/commit/0d37487d9f349388a3f1cef6a536cf9dcc4b6273), [`8661d7d`](https://github.com/mastra-ai/mastra/commit/8661d7d7179f0a024456aabdd8679bcecd09ac28), [`733a537`](https://github.com/mastra-ai/mastra/commit/733a537489a858b5880b2e98809334fba895a221), [`e8e299c`](https://github.com/mastra-ai/mastra/commit/e8e299cc6abdfc39947e2fec25803493015d3882), [`edfc548`](https://github.com/mastra-ai/mastra/commit/edfc548886bc7bae17b681f8b6b41a47eb32bcd2), [`d55807c`](https://github.com/mastra-ai/mastra/commit/d55807cb9f080f3f5d1db06aca02b8fe0992507e), [`b05f486`](https://github.com/mastra-ai/mastra/commit/b05f48612984d5fe2447ea2d6cdd5c604d285b97), [`a981e66`](https://github.com/mastra-ai/mastra/commit/a981e662ed8fc476292375d135cb14a2681efedf), [`a8a4871`](https://github.com/mastra-ai/mastra/commit/a8a4871215f51da95c47129602157ce5372f634a), [`41c24e3`](https://github.com/mastra-ai/mastra/commit/41c24e376e1c61974af9aa0b48d4e0091e476dcc), [`ee0c1a0`](https://github.com/mastra-ai/mastra/commit/ee0c1a097de3acebe7dfc8c136479d4cb5b5b451), [`4bc0650`](https://github.com/mastra-ai/mastra/commit/4bc0650a49114480bf9b5bd318d679941f726823), [`eb9ecaa`](https://github.com/mastra-ai/mastra/commit/eb9ecaa89c36e889749e3b825cfc507ce7f7980b), [`befbfc2`](https://github.com/mastra-ai/mastra/commit/befbfc260d5ec5ece7cdb65a80e94292f428d4c9), [`4ff3ee2`](https://github.com/mastra-ai/mastra/commit/4ff3ee2bff7ed07528b4817f8f49639031c72a4d), [`c7d2ac2`](https://github.com/mastra-ai/mastra/commit/c7d2ac245e6e549f3ee8b6c019fd43fd352fb528), [`e6c3c14`](https://github.com/mastra-ai/mastra/commit/e6c3c14c27fe0b46137c9593b1ad81df1cb46d72), [`9207dfa`](https://github.com/mastra-ai/mastra/commit/9207dfab8062e5fc68b751684797ff86fe0b4e70), [`13c2f97`](https://github.com/mastra-ai/mastra/commit/13c2f979a63ee441834ad0d947b40a82010afb59), [`5165cdc`](https://github.com/mastra-ai/mastra/commit/5165cdcdcf50e144bb8113278535196cc9b07065), [`e737014`](https://github.com/mastra-ai/mastra/commit/e737014e0fc7035759762bb5b48baef1d6c0f6a7), [`6bb5d71`](https://github.com/mastra-ai/mastra/commit/6bb5d7193fe9166b219f0fccae17db7a5ae86e65), [`f591643`](https://github.com/mastra-ai/mastra/commit/f591643becdf0be9bddce6ba1748e64bc30d77f1), [`63796ba`](https://github.com/mastra-ai/mastra/commit/63796ba0fda60253be17535e68f6bbbf1e6ffa09), [`b1ad324`](https://github.com/mastra-ai/mastra/commit/b1ad324d657f3544b0701332aef7eb10e9a36258), [`61c566d`](https://github.com/mastra-ai/mastra/commit/61c566dd2f2cde2b23ed8f139924e530d4202214), [`9a3d352`](https://github.com/mastra-ai/mastra/commit/9a3d352a5ba0c2a9e4f7a9cc4f028a393bc74306), [`c24754c`](https://github.com/mastra-ai/mastra/commit/c24754c1fb6fe144e5051e536e98c8a18b0214ac), [`12c61d2`](https://github.com/mastra-ai/mastra/commit/12c61d280c8cb208bc3c8dbcbe5dcc60cf9d1cd0), [`bbd4486`](https://github.com/mastra-ai/mastra/commit/bbd4486b7296d6fd0de7177344f87fbbc0bb4fff), [`ae2dc20`](https://github.com/mastra-ai/mastra/commit/ae2dc201dbb48466c3cf77e3d4ef04826132b2db), [`9c984f9`](https://github.com/mastra-ai/mastra/commit/9c984f9152c0ded45453f21cb1f517fe12f8beae), [`6bb5d71`](https://github.com/mastra-ai/mastra/commit/6bb5d7193fe9166b219f0fccae17db7a5ae86e65), [`c46eb09`](https://github.com/mastra-ai/mastra/commit/c46eb09ce4987509af57a0ac582c61241a6dd2f1), [`9ee8120`](https://github.com/mastra-ai/mastra/commit/9ee8120ce17f76b9f617489e05a283353742690a), [`cd7683d`](https://github.com/mastra-ai/mastra/commit/cd7683d3040bc322ec6f6efb6f9c1e8e40f062a1), [`e737014`](https://github.com/mastra-ai/mastra/commit/e737014e0fc7035759762bb5b48baef1d6c0f6a7), [`d975e92`](https://github.com/mastra-ai/mastra/commit/d975e924d4936f46c386bd3dee39c671720289f6), [`45dd6ee`](https://github.com/mastra-ai/mastra/commit/45dd6ee089bd7df0d0c98a10098e483fd388e04a), [`4e9a228`](https://github.com/mastra-ai/mastra/commit/4e9a2283d5fd6ed1b70a2751eb3dc2cbf82ada20), [`d6ce34a`](https://github.com/mastra-ai/mastra/commit/d6ce34aeceb06ddf3d595a1eed5cc74f481a46a1), [`f95f468`](https://github.com/mastra-ai/mastra/commit/f95f468cf1e7c2b924a13826494f98b8f2ccd581), [`30ed33e`](https://github.com/mastra-ai/mastra/commit/30ed33ee14084a26019aba15fceadda6d6ddefaf), [`cb0291c`](https://github.com/mastra-ai/mastra/commit/cb0291cca0f8a769495375ff213cbda2512bb542), [`04a815f`](https://github.com/mastra-ai/mastra/commit/04a815fc8971d29e97fcdcc5008a1eb472fc00ff), [`1cfa878`](https://github.com/mastra-ai/mastra/commit/1cfa8784d8da0dfaa0317e5048bc48b6084a5ea5), [`997cf5b`](https://github.com/mastra-ai/mastra/commit/997cf5bb3fc600b30aa20e048b663e48e0e1305a), [`9a12ef3`](https://github.com/mastra-ai/mastra/commit/9a12ef3fccf3f4186db0f294f4ee1f02cf4d8db2), [`db6940e`](https://github.com/mastra-ai/mastra/commit/db6940ea63b76df2bc0a7c105a493342b9eaf0ec), [`32d3583`](https://github.com/mastra-ai/mastra/commit/32d358332cb8ac2306b83b73cf3536e74dbd435e), [`7960688`](https://github.com/mastra-ai/mastra/commit/7960688828e04eaf3106e34f7758fa580257eef6), [`91ad69d`](https://github.com/mastra-ai/mastra/commit/91ad69d64994c89199b0c55399e64ed91c61df2f), [`c4e2364`](https://github.com/mastra-ai/mastra/commit/c4e2364742bc37beebfa995db2d42efce6cfc7b8), [`8dc408d`](https://github.com/mastra-ai/mastra/commit/8dc408d34438f9e13297f792c11a5cfd6cf952e1), [`c92def1`](https://github.com/mastra-ai/mastra/commit/c92def10a13c822972c96f0a4ca6ffc1f4258aed), [`63041eb`](https://github.com/mastra-ai/mastra/commit/63041eb4c50b520a0a80e03d4cd6ea99f67715a0), [`c118318`](https://github.com/mastra-ai/mastra/commit/c1183181c9804303db4b511c2e2648f8b714712b), [`c5eaec5`](https://github.com/mastra-ai/mastra/commit/c5eaec5a860d80d0e3805e67db0414b87ac8cbed), [`fc07c64`](https://github.com/mastra-ai/mastra/commit/fc07c6465043e08e99193a6751a01c56ffc2e7a1), [`cced745`](https://github.com/mastra-ai/mastra/commit/cced745a056ec2225c5bc702e32d848847aa8b65), [`542dee2`](https://github.com/mastra-ai/mastra/commit/542dee254167f974ff8cbbbfc0ce10f9a2616a7b), [`b05f486`](https://github.com/mastra-ai/mastra/commit/b05f48612984d5fe2447ea2d6cdd5c604d285b97), [`3c19dce`](https://github.com/mastra-ai/mastra/commit/3c19dcef8e73062a80627a4927eae3ec11145afd), [`aca2869`](https://github.com/mastra-ai/mastra/commit/aca2869b2031982f3c4a2f52525c9be7cf123ef8), [`8dcd635`](https://github.com/mastra-ai/mastra/commit/8dcd6357f0d9557cebc727d7abc6901af6231e4f), [`a58483c`](https://github.com/mastra-ai/mastra/commit/a58483cff1a9d41fce7c931843f48cb0ac450f64), [`a58483c`](https://github.com/mastra-ai/mastra/commit/a58483cff1a9d41fce7c931843f48cb0ac450f64), [`e6f8450`](https://github.com/mastra-ai/mastra/commit/e6f845074d478527026b18d85031b23353e1d0a4), [`895e9df`](https://github.com/mastra-ai/mastra/commit/895e9dfc17d6f34299eca64e317ded9e5f5e5ef8), [`e66b2ba`](https://github.com/mastra-ai/mastra/commit/e66b2ba100db63eaeab6e21e1ea34b113f2ec781), [`3e8727e`](https://github.com/mastra-ai/mastra/commit/3e8727e11ec1a5d733acedb5c872896394be18c1)]:
51
+ - @mastra/core@1.62.0
52
+ - @mastra/libsql@1.22.0
53
+ - @mastra/pg@1.22.0
54
+ - @mastra/code-sdk@1.5.0
55
+ - @mastra/github-signals@0.3.0
56
+ - @mastra/duckdb@1.6.3
57
+ - @mastra/mcp@1.17.2
58
+ - @mastra/memory@1.28.0
59
+ - @mastra/fastembed@1.3.0
60
+ - @mastra/observability@1.17.2
61
+
62
+ ## 0.36.0-alpha.12
63
+
64
+ ### Patch Changes
65
+
66
+ - Updated dependencies [[`48ef1f1`](https://github.com/mastra-ai/mastra/commit/48ef1f1d24eedafbb07f64e659a81b52b67b8bf6), [`63796ba`](https://github.com/mastra-ai/mastra/commit/63796ba0fda60253be17535e68f6bbbf1e6ffa09), [`3c19dce`](https://github.com/mastra-ai/mastra/commit/3c19dcef8e73062a80627a4927eae3ec11145afd)]:
67
+ - @mastra/core@1.62.0-alpha.12
68
+ - @mastra/code-sdk@1.5.0-alpha.12
69
+
70
+ ## 0.36.0-alpha.11
71
+
72
+ ### Minor Changes
73
+
74
+ - Added review and working modes to MastraCode GitHub subscriptions. ([#21542](https://github.com/mastra-ai/mastra/pull/21542))
75
+
76
+ ```text
77
+ /github subscribe 42 --mode review
78
+ ```
79
+
80
+ ### Patch Changes
81
+
82
+ - Updated dependencies [[`15f92d0`](https://github.com/mastra-ai/mastra/commit/15f92d02bcacac7506346709d88b8bf11ae11695), [`4ff3ee2`](https://github.com/mastra-ai/mastra/commit/4ff3ee2bff7ed07528b4817f8f49639031c72a4d), [`c24754c`](https://github.com/mastra-ai/mastra/commit/c24754c1fb6fe144e5051e536e98c8a18b0214ac), [`cd7683d`](https://github.com/mastra-ai/mastra/commit/cd7683d3040bc322ec6f6efb6f9c1e8e40f062a1), [`45dd6ee`](https://github.com/mastra-ai/mastra/commit/45dd6ee089bd7df0d0c98a10098e483fd388e04a), [`32d3583`](https://github.com/mastra-ai/mastra/commit/32d358332cb8ac2306b83b73cf3536e74dbd435e), [`aca2869`](https://github.com/mastra-ai/mastra/commit/aca2869b2031982f3c4a2f52525c9be7cf123ef8)]:
83
+ - @mastra/github-signals@0.3.0-alpha.0
84
+ - @mastra/core@1.62.0-alpha.11
85
+ - @mastra/memory@1.28.0-alpha.4
86
+ - @mastra/code-sdk@1.5.0-alpha.11
87
+
88
+ ## 0.36.0-alpha.10
89
+
90
+ ### Patch Changes
91
+
92
+ - Added a Web search provider setting to /settings for choosing the default web_search/web_extract provider (Tavily or Parallel). Every provider stays visible in the selector; ones missing their API key are marked unavailable with the env var to set, and Auto uses the first configured key. ([#22216](https://github.com/mastra-ai/mastra/pull/22216))
93
+
94
+ ```bash
95
+ PARALLEL_API_KEY=your-api-key npx mastracode
96
+ # then: /settings → Web search provider → Parallel
97
+ # and in chat: "Use web_search to find the latest Mastra release"
98
+ ```
99
+
100
+ - Updated dependencies [[`b05f486`](https://github.com/mastra-ai/mastra/commit/b05f48612984d5fe2447ea2d6cdd5c604d285b97), [`41c24e3`](https://github.com/mastra-ai/mastra/commit/41c24e376e1c61974af9aa0b48d4e0091e476dcc), [`4bc0650`](https://github.com/mastra-ai/mastra/commit/4bc0650a49114480bf9b5bd318d679941f726823), [`7960688`](https://github.com/mastra-ai/mastra/commit/7960688828e04eaf3106e34f7758fa580257eef6), [`b05f486`](https://github.com/mastra-ai/mastra/commit/b05f48612984d5fe2447ea2d6cdd5c604d285b97)]:
101
+ - @mastra/core@1.62.0-alpha.10
102
+ - @mastra/code-sdk@1.5.0-alpha.10
103
+ - @mastra/fastembed@1.3.0-alpha.0
104
+ - @mastra/observability@1.17.2-alpha.2
105
+ - @mastra/mcp@1.17.2-alpha.2
106
+
107
+ ## 0.36.0-alpha.9
108
+
109
+ ### Patch Changes
110
+
111
+ - Updated dependencies [[`eb9ecaa`](https://github.com/mastra-ai/mastra/commit/eb9ecaa89c36e889749e3b825cfc507ce7f7980b), [`3e8727e`](https://github.com/mastra-ai/mastra/commit/3e8727e11ec1a5d733acedb5c872896394be18c1)]:
112
+ - @mastra/core@1.62.0-alpha.9
113
+ - @mastra/code-sdk@1.5.0-alpha.9
114
+
3
115
  ## 0.36.0-alpha.8
4
116
 
5
117
  ### Patch Changes
package/dist/cli.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- const require_tui = require("./tui-Tj_rELAi.cjs");
2
+ const require_tui = require("./tui-Dg7vMm5_.cjs");
3
3
  let _mastra_code_sdk = require("@mastra/code-sdk");
4
4
  let fs = require("fs");
5
5
  fs = require_tui.__toESM(fs, 1);
@@ -33,7 +33,7 @@ function createShutdownCoordinator(cleanup, exit, timeoutMs = 5e3) {
33
33
  //#endregion
34
34
  //#region src/version.ts
35
35
  function getCurrentVersion() {
36
- return "0.36.0-alpha.8";
36
+ return "0.36.0";
37
37
  }
38
38
  //#endregion
39
39
  //#region src/main.ts
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { d as detectTerminalTheme, f as applyThemeMode, t as MastraTUI, v as restoreTerminalForeground } from "./tui-iWgsct0c.js";
2
+ import { d as detectTerminalTheme, f as applyThemeMode, t as MastraTUI, v as restoreTerminalForeground } from "./tui-BaobOqGM.js";
3
3
  import { createMastraCode } from "@mastra/code-sdk";
4
4
  import fs from "fs";
5
5
  import { createMastraCodeAnalytics } from "@mastra/code-sdk/analytics";
@@ -32,7 +32,7 @@ function createShutdownCoordinator(cleanup, exit, timeoutMs = 5e3) {
32
32
  //#endregion
33
33
  //#region src/version.ts
34
34
  function getCurrentVersion() {
35
- return "0.36.0-alpha.8";
35
+ return "0.36.0";
36
36
  }
37
37
  //#endregion
38
38
  //#region src/main.ts
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/tui/commands/github.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAmKtD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiEtG"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../../src/tui/commands/github.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAuMtD,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFtG"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/tui/commands/settings.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAgLtD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6FnF"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/tui/commands/settings.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAgLtD,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6GnF"}
@@ -7,7 +7,7 @@
7
7
  */
8
8
  import { Box } from '@earendil-works/pi-tui';
9
9
  import type { Focusable } from '@earendil-works/pi-tui';
10
- import type { StorageBackend } from '@mastra/code-sdk/onboarding/settings';
10
+ import type { StorageBackend, WebSearchProviderSetting } from '@mastra/code-sdk/onboarding/settings';
11
11
  import type { NotificationMode } from '../notify.js';
12
12
  export interface SettingsConfig {
13
13
  notifications: NotificationMode;
@@ -21,6 +21,9 @@ export interface SettingsConfig {
21
21
  pgConnectionString: string;
22
22
  libsqlUrl: string;
23
23
  experimentalGithubSignals: boolean;
24
+ webSearchProvider: WebSearchProviderSetting;
25
+ tavilyKeyAvailable: boolean;
26
+ parallelKeyAvailable: boolean;
24
27
  }
25
28
  export interface SettingsCallbacks {
26
29
  onNotificationsChange: (mode: NotificationMode) => void;
@@ -31,6 +34,7 @@ export interface SettingsCallbacks {
31
34
  onQuietModeMaxToolPreviewLinesChange: (lines: number) => void;
32
35
  onStorageBackendChange: (backend: StorageBackend, connectionUrl?: string) => void;
33
36
  onExperimentalGithubSignalsChange: (enabled: boolean) => boolean | void | Promise<boolean | void>;
37
+ onWebSearchProviderChange: (provider: WebSearchProviderSetting) => void;
34
38
  onApiKeys?: () => void;
35
39
  onClose: () => void;
36
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/tui/components/settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,EAAiE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,KAAK,EAAE,SAAS,EAA2B,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQrD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,gBAAgB,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,4BAA4B,EAAE,MAAM,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,oCAAoC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,sBAAsB,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,iCAAiC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAClG,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA6JD,qBAAa,iBAAkB,SAAQ,GAAI,YAAW,SAAS;IAC7D,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;gBAEW,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB;IAyQhE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/tui/components/settings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,GAAG,EAAiE,MAAM,wBAAwB,CAAC;AAC5G,OAAO,KAAK,EAAE,SAAS,EAA2B,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAQrD,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,gBAAgB,CAAC;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,4BAA4B,EAAE,MAAM,CAAC;IACrC,cAAc,EAAE,cAAc,CAAC;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,yBAAyB,EAAE,OAAO,CAAC;IACnC,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,qBAAqB,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,sBAAsB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,iBAAiB,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,oCAAoC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,sBAAsB,EAAE,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClF,iCAAiC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAClG,yBAAyB,EAAE,CAAC,QAAQ,EAAE,wBAAwB,KAAK,IAAI,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAmKD,qBAAa,iBAAkB,SAAQ,GAAI,YAAW,SAAS;IAC7D,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,OAAO,IAAI,OAAO,CAErB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAEzB;gBAEW,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB;IAiThE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAGhC"}
@@ -2310,7 +2310,7 @@ function getCommands(modes) {
2310
2310
  },
2311
2311
  {
2312
2312
  key: "/github",
2313
- description: "Subscribe/sync GitHub PR signals"
2313
+ description: "Subscribe in review/working mode or sync GitHub PR signals"
2314
2314
  },
2315
2315
  {
2316
2316
  key: "/goal",
@@ -14032,6 +14032,11 @@ var StorageBackendSubmenu = class extends Container {
14032
14032
  function quietPreviewLinesLabel(lines) {
14033
14033
  return lines === 0 ? "None" : `${lines} line${lines === 1 ? "" : "s"}`;
14034
14034
  }
14035
+ function webSearchProviderLabel(provider) {
14036
+ if (provider === "tavily") return "Tavily";
14037
+ if (provider === "parallel") return "Parallel";
14038
+ return "Auto";
14039
+ }
14035
14040
  function storageLabel(config) {
14036
14041
  if (config.storageBackend === "pg") return "PostgreSQL";
14037
14042
  if (config.libsqlUrl) return `LibSQL (${config.libsqlUrl})`;
@@ -14188,6 +14193,35 @@ var SettingsComponent = class extends Box {
14188
14193
  done(quietPreviewLinesLabel(config.quietModeMaxToolPreviewLines));
14189
14194
  }, () => done())
14190
14195
  }] : [],
14196
+ {
14197
+ id: "webSearchProvider",
14198
+ label: "Web search provider",
14199
+ description: "Default provider for web_search/web_extract. Providers require their API key.",
14200
+ currentValue: webSearchProviderLabel(config.webSearchProvider),
14201
+ submenu: (_currentValue, done) => new SelectSubmenu([
14202
+ {
14203
+ value: "auto",
14204
+ label: " Auto",
14205
+ description: "First configured provider key (Tavily, then Parallel)"
14206
+ },
14207
+ {
14208
+ value: "tavily",
14209
+ label: config.tavilyKeyAvailable ? " Tavily" : " Tavily (unavailable)",
14210
+ description: config.tavilyKeyAvailable ? "Always use Tavily" : "Missing TAVILY_API_KEY — set it to use Tavily"
14211
+ },
14212
+ {
14213
+ value: "parallel",
14214
+ label: config.parallelKeyAvailable ? " Parallel" : " Parallel (unavailable)",
14215
+ description: config.parallelKeyAvailable ? "Always use Parallel" : "Missing PARALLEL_API_KEY — set it to use Parallel"
14216
+ }
14217
+ ], config.webSearchProvider, (value) => {
14218
+ if (value === "tavily" && !config.tavilyKeyAvailable) return;
14219
+ if (value === "parallel" && !config.parallelKeyAvailable) return;
14220
+ config.webSearchProvider = value;
14221
+ callbacks.onWebSearchProviderChange(config.webSearchProvider);
14222
+ done(webSearchProviderLabel(config.webSearchProvider));
14223
+ }, () => done())
14224
+ },
14191
14225
  {
14192
14226
  id: "experimentalGithubSignals",
14193
14227
  label: "Experimental GitHub signals",
@@ -14551,7 +14585,10 @@ async function handleSettingsCommand(ctx) {
14551
14585
  storageBackend: globalSettings.storage.backend,
14552
14586
  pgConnectionString: globalSettings.storage.pg?.connectionString ?? "",
14553
14587
  libsqlUrl: globalSettings.storage.libsql?.url ?? "",
14554
- experimentalGithubSignals: globalSettings.signals.experimentalGithubSignals
14588
+ experimentalGithubSignals: globalSettings.signals.experimentalGithubSignals,
14589
+ webSearchProvider: globalSettings.preferences.webSearchProvider === "tavily" && !process.env.TAVILY_API_KEY || globalSettings.preferences.webSearchProvider === "parallel" && !process.env.PARALLEL_API_KEY ? "auto" : globalSettings.preferences.webSearchProvider,
14590
+ tavilyKeyAvailable: !!process.env.TAVILY_API_KEY,
14591
+ parallelKeyAvailable: !!process.env.PARALLEL_API_KEY
14555
14592
  };
14556
14593
  return new Promise((resolve) => {
14557
14594
  const settings = new SettingsComponent(config, {
@@ -14617,6 +14654,12 @@ async function handleSettingsCommand(ctx) {
14617
14654
  ctx.showInfo(`Experimental GitHub signals: ${enabled ? "on" : "off"} (restart required)`);
14618
14655
  return true;
14619
14656
  },
14657
+ onWebSearchProviderChange: (provider) => {
14658
+ const current = loadSettings();
14659
+ current.preferences.webSearchProvider = provider;
14660
+ saveSettings(current);
14661
+ ctx.showInfo(`Web search provider: ${provider}`);
14662
+ },
14620
14663
  onApiKeys: () => {
14621
14664
  ctx.state.ui.hideOverlay();
14622
14665
  resolve();
@@ -16613,6 +16656,7 @@ function formatPollInterval(value) {
16613
16656
  if (value % 6e4 === 0) return `${value / 6e4}m`;
16614
16657
  return `${Math.round(value / 1e3)}s`;
16615
16658
  }
16659
+ const GITHUB_USAGE = "Usage: /github subscribe <PR> [--mode review|working], /github <PR> [--mode review|working], /github unsubscribe <PR>, /github sync, or /github debug. <PR> can be 123, owner/repo#123, or a GitHub pull request URL.";
16616
16660
  function parseGithubPRReference(input) {
16617
16661
  const trimmed = input.trim();
16618
16662
  if (!trimmed) return void 0;
@@ -16625,6 +16669,27 @@ function parseGithubPRReference(input) {
16625
16669
  number: Number(repoReference[3])
16626
16670
  };
16627
16671
  }
16672
+ function extractGithubSubscriptionMode(args, action) {
16673
+ if (args.some((arg) => arg.startsWith("--mode="))) return { error: `Use the spaced form --mode review or --mode working; --mode=... is not supported. ${GITHUB_USAGE}` };
16674
+ const modeIndexes = args.flatMap((arg, index) => arg === "--mode" ? [index] : []);
16675
+ if (modeIndexes.length > 1) return { error: `Specify --mode only once. ${GITHUB_USAGE}` };
16676
+ if (modeIndexes.length === 0) return {
16677
+ referenceArgs: args,
16678
+ mode: "working"
16679
+ };
16680
+ if (action === "unsubscribe") return { error: `--mode applies only when subscribing. ${GITHUB_USAGE}` };
16681
+ const modeIndex = modeIndexes[0];
16682
+ const mode = args[modeIndex + 1];
16683
+ if (!mode) return { error: `Missing value for --mode. Use review or working. ${GITHUB_USAGE}` };
16684
+ if (mode !== "review" && mode !== "working") return { error: `Unknown GitHub subscription mode "${mode}". Use review or working. ${GITHUB_USAGE}` };
16685
+ return {
16686
+ referenceArgs: args.filter((_, index) => index !== modeIndex && index !== modeIndex + 1),
16687
+ mode
16688
+ };
16689
+ }
16690
+ function normalizeGithubSubscriptionMode(value) {
16691
+ return value === "review" ? "review" : "working";
16692
+ }
16628
16693
  async function getCurrentGithubThread(ctx) {
16629
16694
  const session = ctx.state.session;
16630
16695
  const threadId = session?.thread?.getId?.();
@@ -16668,6 +16733,7 @@ async function describeGithubSubscriptions(ctx) {
16668
16733
  return [`GitHub Signals debug for ${threadId}: ${subscriptions.length} subscription${subscriptions.length === 1 ? "" : "s"}, polling=${pollingActive ? "active" : "inactive"}${pollIntervalMs ? `, interval=${formatPollInterval(pollIntervalMs)}` : ""}`, ...subscriptions.map((subscription) => {
16669
16734
  if (!isPlainObject(subscription)) return "- invalid subscription metadata";
16670
16735
  const pr = `${subscription.owner}/${subscription.repo}#${subscription.number}`;
16736
+ const mode = `mode=${normalizeGithubSubscriptionMode(subscription.mode)}`;
16671
16737
  const sync = subscription.lastSyncStatus ? `sync=${subscription.lastSyncStatus}` : "sync=unknown";
16672
16738
  const poll = subscription.lastSyncAt ? `lastPoll=${formatLocalTimestamp(subscription.lastSyncAt)}` : "lastPoll=never";
16673
16739
  const observed = [
@@ -16679,7 +16745,7 @@ async function describeGithubSubscriptions(ctx) {
16679
16745
  ].filter(Boolean);
16680
16746
  const notificationTime = formatLocalTimestamp(subscription.lastNotificationAt) ?? "unknown time";
16681
16747
  const notification = subscription.lastNotificationKind ? `lastNotification=${subscription.lastNotificationKind}/${subscription.lastNotificationPriority ?? "unknown"} at ${notificationTime}: ${subscription.lastNotificationSummary ?? ""}` : "lastNotification=none";
16682
- return `- ${pr} ${sync} ${poll}${subscription.lastSyncError ? ` error=${subscription.lastSyncError}` : ""}${subscription.lastSnapshotError ? ` snapshotError=${subscription.lastSnapshotError}` : ""}${observed.length ? ` (${observed.join(", ")})` : ""}\n ${notification}`;
16748
+ return `- ${pr} ${mode} ${sync} ${poll}${subscription.lastSyncError ? ` error=${subscription.lastSyncError}` : ""}${subscription.lastSnapshotError ? ` snapshotError=${subscription.lastSnapshotError}` : ""}${observed.length ? ` (${observed.join(", ")})` : ""}\n ${notification}`;
16683
16749
  })].join("\n");
16684
16750
  }
16685
16751
  async function syncGithubSubscriptions(ctx) {
@@ -16733,7 +16799,13 @@ async function handleGithubCommand(ctx, args = []) {
16733
16799
  }
16734
16800
  const explicitSubscribe = maybeAction === "subscribe" || maybeAction === "sub";
16735
16801
  const action = maybeAction === "unsubscribe" || maybeAction === "unsub" ? "unsubscribe" : "subscribe";
16736
- const inlineReference = (action === "unsubscribe" || explicitSubscribe ? restArgs : args).join(" ").trim();
16802
+ const parsedMode = extractGithubSubscriptionMode(action === "unsubscribe" || explicitSubscribe ? restArgs : args, action);
16803
+ if ("error" in parsedMode) {
16804
+ ctx.showError(parsedMode.error);
16805
+ return;
16806
+ }
16807
+ const { referenceArgs, mode } = parsedMode;
16808
+ const inlineReference = referenceArgs.join(" ").trim();
16737
16809
  const currentThread = await getCurrentGithubThread(ctx);
16738
16810
  const existingSubscriptions = getGithubSubscriptionsFromThreadMetadata(currentThread.metadata);
16739
16811
  const reference = inlineReference ? inlineReference : action === "unsubscribe" && existingSubscriptions.length === 1 ? existingSubscriptions[0] : await askModalQuestion(ctx.state.ui, {
@@ -16743,7 +16815,7 @@ async function handleGithubCommand(ctx, args = []) {
16743
16815
  if (reference === null) return;
16744
16816
  const parsed = typeof reference === "string" ? parseGithubPRReference(reference) : reference;
16745
16817
  if (!parsed) {
16746
- ctx.showError("Usage: /github 123, /github owner/repo#123, /github unsubscribe 123, /github sync, /github debug, or /github https://github.com/owner/repo/pull/123");
16818
+ ctx.showError(GITHUB_USAGE);
16747
16819
  return;
16748
16820
  }
16749
16821
  if (!currentThread.threadId || !currentThread.resourceId) {
@@ -16751,19 +16823,32 @@ async function handleGithubCommand(ctx, args = []) {
16751
16823
  return;
16752
16824
  }
16753
16825
  const githubSignalsProcessor = ctx.state.options?.githubSignals;
16754
- const runOperation = action === "unsubscribe" ? githubSignalsProcessor?.unsubscribeThreadFromPR : githubSignalsProcessor?.subscribeThreadToPR;
16755
- if (!runOperation) {
16826
+ if (!githubSignalsProcessor) {
16756
16827
  ctx.showError("GitHub signals are not available. Enable them in /settings and restart MastraCode.");
16757
16828
  return;
16758
16829
  }
16759
16830
  try {
16760
- const result = await runOperation.call(githubSignalsProcessor, {
16831
+ if (action === "unsubscribe") {
16832
+ const result = await githubSignalsProcessor.unsubscribeThreadFromPR({
16833
+ threadId: currentThread.threadId,
16834
+ resourceId: currentThread.resourceId,
16835
+ pr: parsed
16836
+ });
16837
+ const prefix = result.removed ? "Unsubscribed from" : "No subscription found for";
16838
+ ctx.showInfo(`${prefix} ${result.owner}/${result.repo}#${result.number}.`);
16839
+ return;
16840
+ }
16841
+ const result = await githubSignalsProcessor.subscribeThreadToPR({
16761
16842
  threadId: currentThread.threadId,
16762
16843
  resourceId: currentThread.resourceId,
16763
- pr: parsed
16844
+ pr: parsed,
16845
+ mode
16764
16846
  });
16765
- const prefix = action === "unsubscribe" ? result.removed ? "Unsubscribed from" : "No subscription found for" : "Subscribed to";
16766
- ctx.showInfo(`${prefix} ${result.owner}/${result.repo}#${result.number}.`);
16847
+ if (result.terminalState) {
16848
+ ctx.showInfo(`Not subscribed to ${result.owner}/${result.repo}#${result.number} in review mode because it is already ${result.terminalState}.`);
16849
+ return;
16850
+ }
16851
+ ctx.showInfo(`Subscribed to ${result.owner}/${result.repo}#${result.number} in ${normalizeGithubSubscriptionMode(result.mode)} mode.`);
16767
16852
  } catch (error) {
16768
16853
  ctx.showError(`Failed to ${action} GitHub PR: ${error instanceof Error ? error.message : String(error)}`);
16769
16854
  }
@@ -23916,4 +24001,4 @@ var MastraTUI = class MastraTUI {
23916
24001
  //#endregion
23917
24002
  export { mastraBrand as _, OMProgressComponent as a, ToolExecutionComponentEnhanced as c, detectTerminalTheme as d, applyThemeMode as f, mastra as g, getThemeMode as h, LoginDialogComponent as i, ModelSelectorComponent as l, getMarkdownTheme as m, createTUIState as n, formatOMStatus as o, getEditorTheme as p, LoginSelectorComponent as r, UserMessageComponent as s, MastraTUI as t, AssistantMessageComponent as u, restoreTerminalForeground as v, theme as y };
23918
24003
 
23919
- //# sourceMappingURL=tui-iWgsct0c.js.map
24004
+ //# sourceMappingURL=tui-BaobOqGM.js.map