inbox wording cleanup

This commit is contained in:
Ian Gulliver
2026-10-20 11:54:01 -07:00
parent 2431a174a7
commit cfd06d5582
2 changed files with 12 additions and 12 deletions
+10 -10
View File
@@ -32,8 +32,8 @@ type askArgs struct {
func (m *Manager) askTool(l *live) mcp.Tool { func (m *Manager) askTool(l *live) mcp.Tool {
return mcp.Tool{ return mcp.Tool{
Name: "ask_human", Name: "ask_human",
Description: "Ask the human a question through their inbox. Use this for every question; never ask in plain prose. " + Description: "Ask the human a question. 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: " + "The human may answer without having read your transcript, so every question must stand on its own: " +
"put the background they need in context. " + "put the background they need in context. " +
"Write the choices inline in context as Markdown list items: " + "Write the choices inline in context as Markdown list items: " +
"`- ( ) choice` for pick-one choices (mark the one you recommend `- (*) choice`), or " + "`- ( ) 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) 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. "+ 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) "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 { func (m *Manager) cancelQuestionTool(l *live) mcp.Tool {
return mcp.Tool{ return mcp.Tool{
Name: "cancel_question", Name: "cancel_question",
Description: "Withdraw a question you asked with ask_human that is still waiting in the human's inbox, " + 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 from the inbox and no answer to it will arrive.", "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(`{ InputSchema: json.RawMessage(`{
"type": "object", "type": "object",
"properties": { "properties": {
@@ -247,7 +247,7 @@ func (m *Manager) cancelQuestion(ctx context.Context, l *live, raw json.RawMessa
if err != nil { if err != nil {
return "", err 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 { 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 { func deliveryMessage(pending []store.Pending) string {
b := &strings.Builder{} b := &strings.Builder{}
b.WriteString("Responses from your inbox:\n") for i, p := range pending {
for _, p := range pending {
r := p.Response r := p.Response
if i > 0 {
b.WriteString("\n") 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 { switch r.Type {
case api.Option: case api.Option:
+1 -1
View File
@@ -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. " + 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. " + 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. " + "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. " +