Repository navigation
feat(timeline): the agent answers when tagged in a comment - #622
Merged
Merged
Conversation
A comment on the timeline or on an asset that tags @lens (or the assistant's own name) gets the agent's answer as a comment by Lens on the same thread. It answers as the person who tagged it, with their tools, in a conversation of theirs titled after the item (one per thread); every change it proposes waits for their approval and the reply links where to decide. Its model calls run in the ledger against that conversation and the item's namespace, and without a model or within a used-up budget the reply says so. Settings › AI assistant › Answer when tagged in a comment (ai.answer_comments, on) turns it off. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ln25ykE6uBDqx21WBU94SX
adeelahmad
pushed a commit
that referenced
this pull request
Oct 18, 2026
#622 added ai.answer_comments; the Kokoro test's view left it out, so the AI section saved it too and the test saw two saves instead of one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ALjNbLobvPe7VwvDL8j7V3
21 of 23 tasks
adeelahmad
pushed a commit
that referenced
this pull request
Oct 18, 2026
…swers setting #622 added ai.answer_comments after #538's test was written, so the test's view lacked it and Save also saved the AI section, failing on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QFUNzy1QZy5HhKAyJxTAYJ
20 of 23 tasks
adeelahmad
pushed a commit
that referenced
this pull request
Oct 18, 2026
#622 added ai.answer_comments (answer when tagged in a comment) after #538 wrote the Kokoro settings test's view of the section, so Save sent an ai update beside the voice one and main's Next.js check went red at 2deac7a. The fixture names the default, the same line #621 and #624 carry. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NY27LFMbLezbvQQQeHT19a
adeelahmad
pushed a commit
that referenced
this pull request
Oct 18, 2026
#622 added ai.answer_comments; without it in the fixture the AI section saved too, so updateSettings was called twice and main's Next.js job went red. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GTrHPwWHtEvFJFq3M1YpH4
20 of 23 tasks
adeelahmad
added a commit
that referenced
this pull request
Oct 18, 2026
* feat(scaling): add providers and make groups in Settings Settings › Auto scaling lists the providers with their last check in words, Check again, and Remove with Undo (the delete waits a few seconds, or runs as the page is left, since sealed credentials can't be put back). Add a provider picks a driver and fills a form drawn from its fields: defaults filled, the name focused, secrets as password fields sent in `secrets`, lists one per line or ticked from their options, Enter saves, and the driver's extra and licence named; a failed check is shown in words. New group on a provider asks for a name, min, max, a budget only when the driver is priced, and the driver's template; rules stay with the assistant, MCP and the API for now. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ALjNbLobvPe7VwvDL8j7V3 * test(voice): the Kokoro settings test sets the comment answers default #622 added ai.answer_comments; the Kokoro test's view left it out, so the AI section saved it too and the test saw two saves instead of one. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ALjNbLobvPe7VwvDL8j7V3 --------- Co-authored-by: Adeel Ahmad <noreply@anthropic.com>
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.
Requested by Adeel · project thread
Description
Before: people and agents could react to and comment on timeline items (#570), but a comment was only read by other people. Asking the agent about an item meant leaving the feed for the Chat page and describing the item again.
After: a comment on the timeline, or on an asset's page, that tags @lens (or the assistant's own name from Settings → Chat rooms) gets the agent's answer as a comment by Lens on the same thread, marked with a sparkle, with its links clickable. The agent answers as the person who tagged it, with their namespaces and tools, in a conversation of theirs titled after the item (one per thread, so a later tag carries on in it, and they can continue on the Chat page). It reads the item and the comments on it so far as data. It only reads: every change it proposes becomes an approval, and the reply says "Waiting for approval in Lens: …" with the link. Without a model, or within a used-up namespace budget, the reply says so instead. Settings → AI assistant → Answer when tagged in a comment (
ai.answer_comments, on) turns it off. The composer hints "ask @lens".How:
domain/comment_agent.pyruns the assistant's existing tool loop (chat.tool_answer) with anactions_ai.Box(every change waits, as an automation's does), insideactivity.scopeso the ledger carries the calls against the conversation and the item's namespace, and writes the reply throughcomments.create(author="assistant"). The routes that create comments callcomment_agent.wake, which answers on a thread of its own when the text tags the agent.commentrows gainauthor(assistant) andchat;Commentgainsby_agent.Motivation and Context
Step 4 of the activity stream design (thread above): tag the agent in a comment or task it directly from the feed, with consequential steps waiting for the user's pick. Follows #570 (reactions and comments), now merged.
Types of changes
!in the title)Checklist:
make hookschecks it on commit).docs/accordingly.changelog.d/(comment-agent.md).Done questions (AGENTS.md)
comment_on_activity) or the API with@lensin the text gets the same answer, as the person its token acts for, and reads it withactivity_comments.@lens …in the comment box and press Enter; the reply appears in the thread.ai.answer_commentsis a switch under Settings → AI assistant, on by default, not in the setup wizard.comment(author,chat),DEFINE ... IF NOT EXISTS; no migration.test_comment_agent.py(2 tests, fake model with tool calls, approvals, ledger, budget, no model, off switch), jesttimeline-social-model.test.ts; docs timeline.md, assistant.md, requirements.md, changelog.d;make openapiregenerated the client.comment.addedactivity (AS2NotewithinReplyTo) bylens:assistant; no new dependency.chat.tool_answer,actions_ai.Boxand_context,activity.scope,bridge._web_line/sources/safe_links,comments.create; no new loop or prompt machinery.Local CI (
ci/local-ci.sh) on this head: FastAPI embedded and server, Next.js, pre-commit, PR title and upgrade all pass.Generated by Claude Code