8000 feat(assistant): draw assistant tools on the canvas by adeelahmad · Pull Request #92 · adeelahmad/lense · GitHub
[go: up one dir, main page]

Skip to content

feat(assistant): draw assistant tools on the canvas - #92

Merged
adeelahmad merged 1 commit into
mainfrom
claude/project-thread-t9tw9j
Oct 3, 2026
Merged

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

Conversation

@adeelahmad
Copy link
Copy Markdown
Owner

Requested by Adeel · project thread

Description

Before: an assistant tool (#81) could only be a prompt or a web request.

After: a tool can also be a graph drawn on the canvas. The graph starts from its parameters (arg nodes) and ends in return nodes. In between it can use:

  • the primitives (pick, condition, switch, set, template, filter, loops, groups, and custom nodes built from them);
  • ask_model, which writes a prompt and passes on the reply, as text or JSON;
  • call_tool, which calls any of the assistant's tools, built-in or from another extension. Tools that change something still ask for approval.

You can try it, and it runs in a conversation like any other tool. The version records that it was made on the canvas.

How: app/domain/tool_nodes.py adds a tool kit to workflows.KITS, and extensions.py adds a graph tool body, checked against the tool's parameters. Tools that call each other stop after 3 levels. Custom nodes made only of primitives can now also be used in tool graphs, which is why the catalog's scope lists in test_flow.py gain tool.

The canvas editor for tool graphs comes with the Extensions page PR.

Motivation and Context

Advanced users can customize the assistant on the canvas as well as in code.

Types of changes

  • New feature (non-breaking change which adds functionality)

Checklist:

  • The title is a Conventional Commit.
  • My code follows the code style of this project.
  • I added or updated tests. The full backend suite gives 446 passed; the only failure is the LibreOffice conversion test, which fails in this environment for reasons unrelated to this change. mypy is clean. make openapi: the schema is unchanged.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JroZmoXJUKvyfkvDYvmbka


Generated by Claude Code

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JroZmoXJUKvyfkvDYvmbka
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