feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(tui): add local MCP status and publication - #3855

Merged
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status
Aug 26, 2026
Merged

feat(tui): add local MCP status and publication#3855
Astro-Han merged 6 commits into
apache:mainfrom
me2seeks:feat/3838-tui-mcp-status

Conversation

@me2seeks

Copy link
Copy Markdown
Contributor

Summary

Add the first local /mcp vertical slice for the TUI.

  • Load the existing workspace mcp.json in the background and let McpClientManager retain ownership of server connections, discovery, calls, credentials, and stdio children.
  • Publish discovered tools through the TUI's existing Local Runtime Host connection. Publications are serialized and fenced by both connection identity and tool revision, then recreated after that connection is replaced.
  • Add a localized, read-only /mcp view for server state, configured transport, negotiated protocol, tool count, diagnostics, and Host publication state. The command is refused during a running turn.
  • Unregister the active capability and close MCP resources before closing the TUI connection.

This does not add another Host connection, reconnect timer, MCP state authority, or provider abstraction. Remote Host publication and management actions remain the later rollout slices described in the issue.

Refs #3838

Review focus

The lifecycle boundary is intentional: MCP config, credentials, transports, and child processes remain client-owned; Runtime Host only receives the existing Client Capability projection and remains the execution/provider-binding authority.

RuntimeHostReconnectingConnection exposes only its current availability and identity. The TUI controller observes that existing lifecycle; it does not connect or schedule retries itself.

Verification

  • npm --workspace maka-agent test — 472 passed
  • npm --workspace @maka/runtime-host test — 1,227 passed, 9 skipped
  • npm --workspace @maka/mcp test — 179 passed
  • Real Local integration: saved config → stdio discovery → Host-visible publication → tool invocation → connection replacement → republish/invoke → unregister and child exit
  • npm --workspace @maka/mcp run typecheck
  • npm --workspace @maka/runtime-host run typecheck
  • npm --workspace maka-agent run typecheck
  • npm run format:check
  • npm run lint
  • Scoped Knip was run for MCP, Runtime Host, and CLI; it reports existing findings outside this diff and no finding on the new files or exports

Not run locally: an interactive Windows TUI session. The repository CI remains the cross-platform check.

AI use

Select exactly one:

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: Codex traced the existing MCP and Runtime Host ownership boundaries, implemented the local TUI slice, reviewed its lifecycle and simplification risks, and ran the verification above.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Expose the active direct-connection identity and its unavailable gaps without adding another reconnect owner. Client-owned capability publishers can now retire stale publication state and republish on the replacement generation.
Generated-by: Codex
Start the client-owned MCP manager in the background for local TUI sessions and serialize capability publication through the existing reconnecting Runtime Host connection. Fence publications by connection identity and tool revision, republish after Host replacement, and close the MCP manager before the TUI connection.
Cover the real saved-config to stdio discovery, Host invocation, reconnect, and child shutdown path.
Generated-by: Codex
Add a TUI-only /mcp command with a localized read-only status view for client-owned servers, negotiated protocols, discovered tools, and Host publication state. Refuse the command during active turns and state the remote-profile limitation explicitly.
Generated-by: Codex
Always attempt to unregister the current connection before closing the MCP manager, including when the first publication acknowledgement races TUI shutdown. Use the presentation initialization state as the single manager-readiness fact.
Generated-by: Codex
Keep McpClientManager as the state authority while translating its connection labels at the Chinese presentation boundary.
Generated-by: Codex

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I reviewed this head and found no blocking issues.

Adds read-only MCP status/publications via existing client manager with connection-identity fencing; hosted test/audit SUCCESS.

No P0-P3.

简体中文该头无阻断。

Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-HanAstro-Han left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

APPROVE — 4fc412e, rebased, no P0-P3 carries over, hosted test SUCCESS.


Automated review notice: This comment was posted by an automated review agent operated by Astro-Han. It is not an independent human review and does not replace one.

@Astro-Han
Astro-Han merged commit e6db07e into apache:mainAug 26, 2026
2 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@me2seeks@Astro-Han