8000 feat(automations): decide an automation's approval with a yes in your chat app by adeelahmad · Pull Request #455 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(automations): decide an automation's approval with a yes in your chat app - #455

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-gfulp2
Oct 16, 2026
Merged

adeelahmad merged 1 commit into
mainfrom
claude/project-thread-gfulp2

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: an automation's action waiting for approval could only be decided on its card in Lens. The message in your chat app gave a link and nothing else.

After: workflow studio M8, part 2 of 5. A reply of "yes" in the private chat Lens told you in approves an automation's action, but only when all of these hold:

  • the action changes something inside Lens (effect lens);
  • the channel lets you approve there (approving in the room is on, and you are on its list);
  • it is the only thing waiting in that chat, or you name it by number ("yes 12").

One that reaches outside Lens or other people still waits for its card, and the reply says where. "No" declines either kind. The message that told you says "Reply “yes” to do it or “no” not to" only when a yes there would count; otherwise it gives the link. "yes all" leaves an automation's actions waiting, to be picked one at a time.

How: bridge.decide_in_room now also sees the automations' approvals its person was told about in that conversation (told.*.conversation) and decides them through ai_tools.approve(..., via="chat") under the same room_approver check as the assistant's own. channels.tell takes the text per chat, so approvals.yes_counts can offer the reply only where it would count.

Motivation and Context

Adeel's workflow studio, module M8 (approvals inbox), brief in the project's workflow-studio/briefs/M8.md. Part 1 was #447. Next: approval activities and notifications, agents' approval tools, the /approvals page.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change; ! in the title)

Checklist:

  • The title is a Conventional Commit.
  • My code follows the code style of this project (make hooks checks it on commit).
  • I added or updated tests.
  • My change requires documentation updates, and I have updated docs/ accordingly.
  • Users need more than the title to understand it, so I wrote it under ## Unreleased in CHANGELOG.md. (n/a: studio modules land under one release note)

Done questions (AGENTS.md)

  • Goal: part 2 of M8; merged on green CI.
  • Agents: n/a, this is the person's own yes; agents still only list and decline (part 4 adds their tools).
  • Zero setup: works with the chat channels already set up; nothing new to configure.
  • Fewest clicks: one word in the chat you're already in, for actions inside Lens.
  • Configurable: follows the room's existing "Approving in the room" setting and its people list.
  • Light: no new process or dependency.
  • Private and secure: only in the private chat that told you, only from people the channel lets approve, only actions inside Lens; P-AUTOMATION-APPROVAL in threat-model.md updated.
  • Cost: no model call; a yes is matched, not read by a model.
  • User decides: the yes is the person's pick; anything reaching outside Lens still needs the card.
  • Upgrades: no change to stored data.
  • Honest: docs label it built; the page, activities and agent tools stay planned.
  • Tests (tests/api/test_approvals_chat.py), docs (automations.md, chat-rooms.md); no schema change.
  • Open: no new dependency.
  • Reported; "refine later" in docs/automations.md (approve buttons in Telegram and Slack).

🤖 Generated with Claude Code

https://claude.ai/code/session_01VF3LK1DBx3dXX2b8c5T3cQ


Generated by Claude Code

… chat app

A yes in the private chat Lens told you in approves an automation's action that
changes something inside Lens, under the room rules: approving on, the sender on
the channel's list, and it the one thing waiting there (or named by its number).
One that reaches outside Lens is decided on its card; no declines either. The
message says to reply yes only where a yes would count.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VF3LK1DBx3dXX2b8c5T3cQ
@adeelahmad adeelahmad self-assigned this Oct 16, 2026
@adeelahmad
adeelahmad merged commit eca8c66 into main Oct 16, 2026
11 checks passed
@adeelahmad
adeelahmad deleted the claude/project-thread-gfulp2 branch October 16, 2026 01:14
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.

2 participants

0