Skip to content

feat(chat): agent profiles, DEV tap, 0.7.1 repin, Claude-style capture (#58, #59) - #60

Open
superWorldSavior wants to merge 7 commits into
mainfrom
atelier/chat-59
Open

superWorldSavior wants to merge 7 commits into
mainfrom
atelier/chat-59

Conversation

@superWorldSavior

Copy link
Copy Markdown
Owner

Stack

Notes

  • Provider 0.7.1 top-level object schema for project_2d; local provider
    redeployed and probed current-surface (fingerprint 28e6c8c9...).
  • The DEV tap stays DEV-only (CASYS_DEV_RELAY_TAP=1); production Muse
    limitation stands. Claude-style events capture through production path.
  • In-app Claude e2e pending vendor quota reset; script ready.

Muse (bex-co/muse-code-acp 0.7.0, pinned + digest-checked) is the default
agent; Codex stays as the legacy profile with bare session keys and
historical stores so native sessions resume. One lazy runtime per
profile x MCP set; shared relays; per-profile namespaced session stores.
Per-conversation agent.select with provenance on every agent-produced
message; persisted default; strict user profiles file (agent-profiles.json,
fail-closed, built-ins never modified); unavailable targets refuse with an
explicit reason and never fall back. Chat Host 0.6.0; no Codex login imposed.

Profiles carry no environment: acpx persists session options under a
snake_case key policy, so uppercase env injection is unrepresentable;
agents inherit the full host environment, as before profiles existed.

Tests: 232 scoped + catalogue green; packaged bundle tests green; UI tsc
clean; packaged-host proof (ambient Muse login): real Muse turn, switch to
Codex with provenance + store isolation, ghost-profile refusal, bad-file
reload refusal, default round-trip ALL PASS. Live Codex turn vendor-blocked
(account quota exhausted until Oct 4); switch + isolation proven anyway.
The file store codec dropped agentProfileId and message agent on load, so
reopened conversations silently fell back to the legacy Codex profile and
lost per-message provenance. Parse both with the contract profile-id rule
(absent stays absent for pre-profile content) and cover the round-trip.

Docs: first-build123d-result quickstart (Muse journey, observed timings,
honest export limitation with bex 0.7.0 tool-output forwarding).

Proof: packaged-host Muse journey B0-B5 (fresh profile, enable, Box 1000,
edit 2000, close/reopen keeps profile + volumes, clean quit) PASS; export
turn executes but yields no viewer (adapter-side, see #53); deno task
package + chat:app-test green.
bex emits synthetic reminderChild inProgress/completed pseudo tool calls
that landed as user-visible tool messages (~10 per turn). Filter the exact
reminderChild: title prefix before transcript and capture; MCP tool names
cannot contain ':', so no real namespaced call can collide. Covered by a
unit test and verified live (0 reminderChild, real MCP tools intact).

Part of #59 (noise item). Tool-output forwarding itself stays blocked on
the vendor: bex 0.7.0 (latest) attaches no rawOutput to MCP tool updates
(presentResult default branch, verified in dist source); @brokkai/muse-acp
0.7.0 ignores client-attached MCP servers, so it cannot replace bex.
bex/Muse tool events carry no rawOutput, so viewers/archives never capture
on Muse turns. When CASYS_DEV_RELAY_TAP=1, standalone relays record exact
tools/call pairs (bounded ring) and the coordinator attributes them to
namespaced mcp__server__tool events: unique match on tool + canonical args
+ turn recency, consumed on match; zero or several matches attribute
nothing, never a wrong result. Bytes always come from the relay record,
the event title is only a lookup key. Without the variable (production)
nothing is recorded and behavior is unchanged.

Proof (packaged host, real Docker + Build123d): export turn with tap ->
viewers=1, revision 1, .step artifact saved (15 KB); without tap ->
viewers=0. Tests: tap unit (match/consume/ambiguity/stale/bounds),
relay record, coordinator attribution/ambiguity/no-tap. 183 green.

Part of #59 (dev bridge); the production limitation stands and stays
documented in the quickstart.
…ject_2d schema)

Adopt the 0.7.1 provider contract: object-top-level project_2d input
schema, same accepted payloads. Fleet, catalogue, compose, launch
groups, observer pins, probe identity and discovery fingerprint move
together; local 0.7.1 provider probed current-surface.
Adapters that forward raw MCP shapes (namespaced title, args object,
JSON string or single-text-block result) now retain viewers through
the production path. Unknown shapes still fall through to the DEV tap
or capture nothing.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d5b8a87bd7

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread desktop/main.ts
Comment on lines +262 to +266
"HOME",
"XDG_CONFIG_HOME",
"CODEX_HOME",
"OPENAI_API_KEY",
"META_API_KEY",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Forward PATH to the Chat Host

When Muse is installed only through PATH (an explicitly supported fallback in resolveMuseHost), this child environment omits PATH; the Chat Host is spawned with clearEnv, so the resolver receives an empty path and marks the default Muse profile unavailable. Forward PATH through the Desktop environment grant and chatHostEnvironment so a normally installed Muse CLI can be discovered.

AGENTS.md reference: AGENTS.md:L107-L110

Useful? React with 👍 / 👎.

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