feat(labs): adapt Lab agent tools to AI tools (0194 Phase 2) - #150
Merged
Conversation
`labAgentToolsToAiTools()` adapts the (already MCP-shaped) LabAgentTools (lab_run/lab_list/lab_create/lab_get/lab_run_saved) to the AiCallableTool shape @xnetjs/plugins uses, so the workspace AI can discover, run, and author Labs — the AI→Lab→Plugin loop's first hop. Execution tools are flagged `high` risk, reads `low`; LabToolPropertySchema is a subset of AiJsonSchema so input schemas pass straight through. Lives in labs (which already depends on plugins, avoiding the cycle). 4 new tests; labs suite 50 green; typecheck/eslint/prettier/fallow clean. The app/electron MCP-server registration of the result remains. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
|
Preview removed for PR #150. |
crs48
added a commit
that referenced
this pull request
Jun 18, 2026
…193/0194) (#201) The `changelog-section` required check was only added in #164, so the 0192/0193/0194 feature batch merged before it never got changelog entries. This backfills the 12 user-facing features that were missing, each dated to its merge day with its PR number and contributors: | PR | Entry | |----|-------| | #138 | A safer foundation for plugins | | #145 | One trust model across plugins and Labs | | #146 | Reliability you can see for managed hubs | | #148 | Drive your own coding agent from xNet | | #149 | AI that can act on your workspace | | #150 | Your Labs become AI tools | | #152 | Your agent can use your workspace | | #154 | AI edits, right inside the editor | | #155 | An agentic dev loop in your terminal | | #158 | Review AI edits before they apply | | #159 | Kick off agentic code tasks from xNet | | #162 | Plugins run on the Labs runtime | Skipped: PRs already covered by umbrella entries (#142 plugin ecosystem, #144 extensibility fabric, #147 automated changelog, #163 agent panel, #180 changelog gallery), internal-only changes (#139 schema authz — zero user-facing effect), and meta/test/docs PRs. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Completes the remaining clean Phase 2 item of exploration 0194:
labAgentToolsToAiTools()adapts the (already MCP-shaped)LabAgentTools —lab_run/lab_list/lab_create/lab_get/lab_run_saved— to theAiCallableToolshape@xnetjs/pluginsexposes, so the workspace AI can discover, run, and author Labs alongside the workspace tools. This is the AI→Lab→Plugin loop's first hop.lab_run/lab_create/lab_run_saved) →highrisk so the agent/consent layer can gate them; reads (lab_get/lab_list) →low.LabToolPropertySchemais structurally a subset ofAiJsonSchema, so input schemas pass straight through (no conversion).@xnetjs/labs(which already depends on@xnetjs/plugins), avoiding theplugins→labscycle.Gates
@xnetjs/labssuite 50 green;tscclean; eslint + prettier clean;fallow audit(with coverage) reports no issues in 3 changed files.Remaining
The app/electron registration of the adapted tools with the MCP server + in-app agent runtime is the remaining (app-side) wiring — this PR ships the type bridge it consumes.
🤖 Generated with Claude Code