From cfd06d55828b78ae599c52fca01c1ebb0246a26b Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Tue, 20 Oct 2026 11:54:01 -0700 Subject: [PATCH] inbox wording cleanup --- internal/agents/inbox.go | 22 +++++++++++----------- internal/agents/ready.go | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/internal/agents/inbox.go b/internal/agents/inbox.go index 14ac361..fab0409 100644 --- a/internal/agents/inbox.go +++ b/internal/agents/inbox.go @@ -32,8 +32,8 @@ type askArgs struct { func (m *Manager) askTool(l *live) mcp.Tool { return mcp.Tool{ Name: "ask_human", - Description: "Ask the human a question through their inbox. Use this for every question; never ask in plain prose. " + - "The human answers from their inbox without having read your transcript, so every question must stand on its own: " + + Description: "Ask the human a question. Use this for every question; never ask in plain prose. " + + "The human may answer without having read your transcript, so every question must stand on its own: " + "put the background they need in context. " + "Write the choices inline in context as Markdown list items: " + "`- ( ) choice` for pick-one choices (mark the one you recommend `- (*) choice`), or " + @@ -163,7 +163,7 @@ func (m *Manager) ask(ctx context.Context, l *live, raw json.RawMessage) (string slog.Error("answer question while away", "item", id, "user", creator.Login, "err", err) } - filed := fmt.Sprintf("Question filed in the human's inbox. question_id: %s. ", id) + filed := fmt.Sprintf("Question filed for the human. question_id: %s. ", id) rest := fmt.Sprintf("The answer will arrive as your next message. "+ "If the human answers it some other way, such as in a chat message, withdraw it with cancel_question and question_id %q.", id) @@ -207,8 +207,8 @@ type cancelArgs struct { func (m *Manager) cancelQuestionTool(l *live) mcp.Tool { return mcp.Tool{ Name: "cancel_question", - Description: "Withdraw a question you asked with ask_human that is still waiting in the human's inbox, " + - "for example because the human answered it in a chat message instead. It is removed from the inbox and no answer to it will arrive.", + Description: "Withdraw a question you asked with ask_human that is still waiting for an answer, " + + "for example because the human answered it in a chat message instead. It is removed and no answer to it will arrive.", InputSchema: json.RawMessage(`{ "type": "object", "properties": { @@ -247,7 +247,7 @@ func (m *Manager) cancelQuestion(ctx context.Context, l *live, raw json.RawMessa if err != nil { return "", err } - return fmt.Sprintf("Question %s withdrawn from the human's inbox.", item.Id), nil + return fmt.Sprintf("Question %s withdrawn.", item.Id), nil } func (m *Manager) validateAsk(ctx context.Context, l *live, args askArgs) error { @@ -529,13 +529,13 @@ func responseIDs(pending []store.Pending) []string { func deliveryMessage(pending []store.Pending) string { b := &strings.Builder{} - b.WriteString("Responses from your inbox:\n") - - for _, p := range pending { + for i, p := range pending { r := p.Response - b.WriteString("\n") + if i > 0 { + b.WriteString("\n") + } - fmt.Fprintf(b, "Your question %s: %s\n", p.Item.Id, p.Item.Payload["question"]) + fmt.Fprintf(b, "You asked: %s\n", p.Item.Payload["question"]) switch r.Type { case api.Option: diff --git a/internal/agents/ready.go b/internal/agents/ready.go index 16a73c4..c4899c7 100644 --- a/internal/agents/ready.go +++ b/internal/agents/ready.go @@ -14,7 +14,7 @@ import ( ) const readyPromptAsk = "If it isn't ready (work remains that you mean to do, or you're waiting on the human), call neither: say what's left in one line and end your turn. " + - "If you're waiting on the human for a decision or input, ask it with ask_human now, even if an earlier message already put it in prose, so it reaches their inbox; only an open ask_human question already counts as asked. Don't change any files this turn." + "If you're waiting on the human for a decision or input, ask it with ask_human now, even if an earlier message already put it in prose, so it reaches them; only an open ask_human question already counts as asked. Don't change any files this turn." const readyPrompt = "Your turn has ended and the review of your latest work has finished. If the task is ready to merge, call ready_for_merge with an overview of the whole task, then end your turn with one line. " + "If the work shouldn't land at all (the approach failed, the task turned out unnecessary or already done), call suggest_discard with your reasoning instead, then end your turn with one line. " +