feat(chat): action→operator, freeform ask→concierge, answered in-thread via chat-mirror (v0.295.0) - #541
Merged
Merged
Conversation
…ad via chat-mirror (v0.295.0)
The chat front door (routeUnmatched, behind fireSlack/fireDiscord/fireClickup)
now runs the full intent layer:
- ask → inline answer (state/direct Claude); if no fast answer, the concierge
(a Claude session with the OS tools) answers in-thread
- action → the governed operator (task_create filed / automation_propose = a
draft an owner approves) does it and confirms in-thread
- work → routes to the best-fit teammate (unchanged)
The concierge/operator are spawned as THREAD-BOUND chat sessions and reply
in-thread through the same chat-mirror primitive every chat agent uses — reusing
agent-os's existing agent-comms path (the "poke the thread") instead of the
bespoke web spawn-and-poll. Personas updated to call slack_reply/discord_reply
when in a thread. Previously action/unanswered-ask fell through to a generic
work agent.
Verified: typecheck + build clean; test:governance 159/159 + tier-A + capability.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
vikasprogrammer
force-pushed
the
feat/chat-operator
branch
from
August 3, 2026 11:45
eecacb4 to
90115af
Compare
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.
Uses the existing agent-comms primitive (the chat-mirror "poke the thread") for the Cockpit concierge/operator in Slack/Discord, instead of the bespoke web spawn-and-poll — per the design discussion.
What changed
The chat front door (
routeUnmatched, behindfireSlack/fireDiscord/fireClickup) now runs the full intent layer:task_create(filed) /automation_propose(a draft an owner approves) — and confirms in-threadThe concierge/operator are spawned as thread-bound chat sessions and reply through the same chat-mirror primitive every chat agent already uses — the "poke the thread." No new polling mechanism; it reuses agent-os's existing comms path. Previously
actionand an unansweredaskjust fell through to a generic work agent.Personas updated to call
slack_reply/discord_replywhen a reply tool is present (i.e. they're in a thread), so the in-thread confirmation is reliable.Verification
typecheck+buildclean;test:governance→ 159/159 + tier-A 18/18 + capability 18/18answerAsk(state/LLM), the operator creating a task viatask_create, andchooseAgentrouting. This wires them into the chat front door via the existing thread-bound spawn.Testing note
I can't inject a Discord/Slack message myself (the bot ignores its own posts; I can't impersonate a user). After deploy I'll watch the live audit while you send a few Discord messages to the instapods bot — the one part only a real thread exercises is the operator/concierge's
discord_replypost-back.src/edge/automations.ts,src/edge/concierge.ts.🤖 Generated with Claude Code