Skip to content

feat(workspaces): launcher-level toolAccess option (MCP vs CLI), merge chat-cli into chat#251

Open
luokerenx4 wants to merge 1 commit into
masterfrom
harness-issue
Open

feat(workspaces): launcher-level toolAccess option (MCP vs CLI), merge chat-cli into chat#251
luokerenx4 wants to merge 1 commit into
masterfrom
harness-issue

Conversation

@luokerenx4
Copy link
Copy Markdown
Contributor

Summary

The launcher-level config layer. Config for a harness launch splits two ways: launcher-level (universal injection knobs OpenAlice applies to any tool-injectable harness) and harness-level (per-harness domain options). This PR implements the launcher level, with toolAccess (MCP vs CLI) as the first knob — and collapses the chat / chat-cli split that motivated it.

  • resolveInjection(template, toolAccess) — a template with injectMcp: true is "tool-injectable, user-choosable". toolAccess: 'cli' → inbox-only MCP + the openalice-cli skill (tools via the alice CLI on PATH); 'mcp' → full MCP. injectMcp: false (no tools) and 'inbox' (a template locked to CLI) ignore toolAccess.
  • Wiring: create() takes CreateOptions { toolAccess }; the POST route reads body.toolAccess; the create form has a Tools dropdown (default MCP).
  • chat-cli deleted — its bootstrap.sh was byte-identical to chat's; the only differences (the injectMcp value + the openalice-cli skill) are now derived from toolAccess. chat's instruction is rewritten mode-neutral (it can't claim "MCP tools available" in CLI mode).
  • Harness-level config deferred on purpose — no harness needs domain options yet; that schema gets built when 3+ real cases show, not speculatively.

Test plan

  • tsc --noEmit clean; ui && tsc -b clean
  • Full suite 1733 (incl. 5 resolveInjection unit tests: mcp / cli / dedup / off / locked)
  • Creation e2e covers both modes: mcp → full .mcp.json; cli → inbox-only .mcp.json + openalice-cli skill, clean commit
  • Live: create a chat workspace with Tools=CLI, confirm /mcp shows only the inbox server and alice is the data path (tomorrow)

Boundary touch

None — workspace launcher + template content + create-form UI. No trading code, no migrations.

🤖 Generated with Claude Code

…e chat-cli into chat

Two config levels for harness launch — this implements the LAUNCHER level:
universal injection knobs that apply to any tool-injectable harness (not
harness-specific options). First knob: `toolAccess` (mcp | cli, default mcp) —
where the agent reaches Alice's data tools.

- resolveInjection(template, toolAccess): a template with `injectMcp: true` is
  "tool-injectable, user-choosable" — `cli` → inbox-only MCP + the openalice-cli
  skill; `mcp` → full MCP. `injectMcp: false` (no tools) / `'inbox'` (CLI-locked)
  ignore toolAccess.
- create() takes CreateOptions {toolAccess}; the route reads body.toolAccess;
  the create form gets a Tools dropdown (launcher-level, default MCP).
- chat-cli template DELETED — chat serves both modes now. Its bootstrap was
  byte-identical to chat's; the only differences (injectMcp flag + the
  openalice-cli skill) are now resolved from toolAccess. chat's instruction is
  rewritten mode-neutral.

Harness-LEVEL config (per-harness domain options) is deliberately deferred —
no harness needs it yet; build that schema when 3+ real cases show, not before.

tsc clean; ui tsc -b clean; full suite 1733; creation e2e covers both modes
(mcp → full .mcp.json; cli → inbox-only + openalice-cli skill).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 2, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
openalice-demo Ready Ready Preview, Comment Jun 2, 2026 8:45am

Request Review

Sign up for free to 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.

1 participant