Is it just me or we broke something?
# proj-agent-canvas
c
Is it just me or we broke something?
👀 1
h
What caused that for you?
c
My agent created that conversation using the agent-canvas’
default
agent profile… which for some reason has empty tools
So it was user error; but this raises more questions for me, I do wonder why do we have a
default
agent profile that is not a … default OpenHands agent, I mean it’s not a workable profile
canvas itself first creates
default
and then adds to it the
terminal
and
file editor
tools manually, from what I understand
h
I don't know how to specify tools for an agent profile so I would assume that it isn't user error but an issue with the default agent profile created
c
@bland-bear-604 when I open a new conversation in canvas, in browser, I see now on bottom of the prompt box a dropdown for agent profile, it says "default" and if I go to its settings it shows a page with Agent and a single agent profile defined, which is named default. What tools does THAT profile have?
b
That exact
default
profile has `tools: []`: no Terminal, File Editor, Task Tracker, Canvas UI, or Browser Tool Set. Runtime still adds
finish
,
think
,
switch_llm
, plus the globally inherited GitHub + Chrome MCP tools. So it can chat and exit, but it has no normal working paws. 🐾
c
so when I use the browser to create a new conversation, and just enter a prompt, canvas code adds tools? show me a link to that code on github (don't mangle it, nice Slack link)
b
Yes — locally, for the
default
OpenHands profile specifically. Canvas deliberately drops the profile ID and launches via global `agent_settings`: default-profile fallback. Then the adapter adds these default tools through `getAgentTools()`. So the dropdown says
default
, but that profile’s
tools: []
is bypassed. Tiny trapdoor. 🐾
c
So what seems to happen here is: • canvas shows the user a 'default' named profile, • which has no tools • but that is not used when the user creates a conversation via agent-canvas UI ◦ instead, the code bypasses it, and recreates a new one with tools ◦ this is confusing me ◦ it does mean that it should work for this user, though • if one uses the
default
named profile directly => they have no
terminal
and
file editor
cc @strong-ice-84145 Please correct me if wrong, is my agent fooling me here, or is this just strange?
s
huh the trapdoor was used as a fallback to send the RUNTIME_SERVICE information (cf the other ticket we were working on) because there's no way a seeded agent profile can contain that information. But I agree that this (weird) solution is pretty bad since custom agent profiles can't carry this runtime_service info, that is important. for tools, tools=None means default tools and tools=[] means no tools. But the real problem to fix asap is the trapdoor yeah
@calm-artist-7206 I had closed the PR you approved but just reopened it. Perhaps worth merging + fast release just to implement a fix.
nod 1
c
I'm ok with it! And I’ll put the issue in the backburner to think it over for next time
Let's merge as is
Do you need anything?
s
I asked a refresh on the reopened PR with the context of this conversation. Let's see what gpt says then maybe merge + release
c
there’s no way a seeded agent profile can contain
Can't a profile contain a custom system prompt? Maybe… it could?
On a side note, on that newer canvas UI, I didn’t see the LLM dropdown anymore. I loved it… 😭 Maybe the way we can do here is like: • user has by default the LLM profile dropdown • any LLM they define/choose applies to an unnamed/default agent profile • a checkbox to enable agent profiles • if enabled, maybe add the agent profiles dropdown
s
btw left a comment on github.com/OpenHands/software-agent-sdk/pull/4078 but perhaps per conversation tool name resolution is the wrong fix for this
actually closing 4078 + adding a fix on the other PR. Will let you know when should review, Then we can merge + cut a release
👍 1
c
Could we clean up the legacy
canvas_ui
completely?
it's the same tool, why support the legacy variant, apart from maybe old conversations for a time? But even for old conversations, we might have now in place some code that makes them load, even though the old tool is unavailable
s
yes, on it
@calm-artist-7206 - SDK PR: github.com/OpenHands/software-agent-sdk/pull/4030 - Canvas PR: github.com/OpenHands/agent-canvas/pull/1650 Compared with main, the SDK PR makes agent-server the authority for deployment-default tools, exposes them through /server_info.default_tools, and applies them when a profile has tools: null. The Canvas PR registers canvas_ui as a managed agent-server default, consumes the server-reported defaults, and launches the selected profile directly instead of rebuilding an inline substitute. The resulting contract is: null inherits agent-server defaults plus canvas_ui, [] means no tools, and a specific list is used exactly. The SDK PR also migrates untouched legacy default profiles that were incorrectly seeded with [].
but
extra_default_tool
is annoying, trying to remove it
nod 1
c
Yes...
canvas_ui
is a tool specific to agent-canvas client application. Just like, I don't know, I could make my agent run on agent-server, and give it at startup a
post_on_slack
tool in addition to the default agent-server tools. It's not a "default"
It's a choice of agent-canvas to send in addition, if that makes sense?
Do we have something like, a design doc for Agent Profiles?
If not, could we make one? Lately I got into the habit to ask the agent to make up an HTML page, document x feature, and it pushes it to enyst.github.io, because it's just easiest, nothing to set up really
Maybe something like that, or apparently github has a "htmlpreview" subdomain that can be used on the fly
Just so we can read in a more humanly-readable format, what are we doing 😂
s
No design doc, Agreed we should have a better support for sharing ideas 😛
wdyt of github.com/OpenHands/software-agent-sdk/pull/4030/…/c284488b6948… adding a boolean "is_default" during tool registration
c
I wouldn't... The term "default" is sooo overloaded, or maybe I'm just dense lolsob
but that commit looks pretty good
Could we make a page documenting the intended behavior, and maybe the high level arch components and their responsibilities?
You know best what you want it to talk about
s
Making a parallel PR in
docs
that contains all that!
c
That may work, thank you 🤔
I thought we had already replaced the
canvas_ui
old python implementation with the new
.json
client-side tool definition, but my agent - and Ai Vong’s agent - are saying it’s still in canvas: • we replaced it in agent-sdk • but agent-canvas still uses the old python definition I opened a PR to try to kill it… https://github.com/OpenHands/agent-canvas/pull/1797 Unfortunately it seems it cannot be immediate, old conversations have the python classes and would probably fail to deserialize. What might… help, maybe, with the profile… is that this is a client-side tool that should only send a minimal definition? Or maybe it doesn’t make a difference for your PRs, you still need to send it 🤔
s
the PR looks good! I pushed a commit to fix ACP problem (they dont want tools) github.com/OpenHands/agent-canvas/pull/1797/commits/06311d3685ab…
I didn't know that client_tools existed! My SDK PR uselessly reimplemented, happy to simplify
c
I'm trying to look if we can merge 1797, I don't like the name the agent chose for the tool...
s
thanks! then I can simplify my PR to only keep the system prompt suffix addition, cut a release and have a much cleaner canvas 🙂
👍 1
merged! cutting a release now