Repository navigation
Description
Problem
A newly provisioned Myra agent advertises 11 pinned tool packages—including @corbits/mcp-tools@0.0.11—but receives an empty runtime tool set. For a request such as “What are the tools that are connected in here?”, it writes mcp_list_servers as ordinary assistant text instead of invoking a structured tool call. About two minutes later, the underlying workflow fails with aborted.
This reproduces after deleting the local Workbench database and Hub data, restarting Hub + Sidecar, connecting Anthropic again, and creating a fresh Myra workbench. It is not stale data or a provider-key problem.
Reproduction
- Start current
mainwith an empty database and a newHUB_DATA_DIR. - Connect an Anthropic provider and open the freshly provisioned Myra agent.
- Send:
What are the tools that are connected in here? - Observe Myra reply with prose ending in
mcp_list_servers, rather than a tool invocation. - Wait 120 seconds from the first
StepStarted.
Observed evidence
For the fresh failing deployment:
workflow_run_launch_spec.tool_package_pinscontains 11 entries, including@corbits/mcp-tools@0.0.11.- The emitted workflow definition has
toolFactoryIds: []. - The sidecar's per-step deploy directory has no
deploy/tool-packages-manifest.json; its loader therefore materializes an empty tool set. - The durable log records
RunStartedandStepStarted, thenSignalAwaitedwithparkKind: "input"after the text reply; exactly ~120 seconds afterStepStarted, it recordsStepFailed { message: "aborted" }andRunFailed. - The chat turn is displayed as completed after the text reply even though its workflow later fails.
Root cause
Two wiring defects combine here.
-
Provisioned deployments persist tool pins but discard them at deploy time.
prepareProvisionedDeployment()storestoolPackagePinsinworkflow_run_launch_spec, butdeployReadyAllocation()reloads that spec and callsdeployPreparedCodeSourcedWorkflow()without forwardingspec.toolPackagePins. The prepared-deploy parameter type has no pin field, and that deploy path never stages the per-step deploy tree. The existingstageWorkflowStep()path is the one that resolves pins into a manifest and sends the deploy pack. Consequently the sidecar'smaterializeStepTools()reads an absent manifest and legitimately returns no factories. -
The assistant step timeout covers idle input waits.
packages/seeding/src/seed.tsgives the assistant a 120,000 ms step timeout. Invendor/intx/workflow/src/runtime/run.ts,runStep()arms that timer before the firstinvokeStep(), then reuses the same abort signal whileparkOnSignal()waits for the next input of an unbounded step. The timer is neither cleared after a successful turn nor scoped to an active model/tool invocation, so an otherwise healthy agent is aborted while waiting for its next message.
Expected behavior
- A fresh Myra deployment materializes every pinned tool package and exposes its tools as structured tool calls.
- After producing a reply, an unbounded chat agent remains parked and routable for the next message; idle time must not consume the model-turn timeout.
- Actual inference/tool work remains bounded by the configured per-turn timeout.
- The UI must not present a terminally failed workflow as a successfully completed turn.
Done when
- A deploy-level regression test proves pins persisted in
workflow_run_launch_specare forwarded into per-step staging, producing a deploy manifest and non-empty runtime factory IDs for@corbits/mcp-tools. - A fresh provisioned Myra run invokes an MCP tool structurally for the reproduction prompt; it does not emit a literal tool name as assistant text.
- A runtime regression test proves an unbounded step that replies and then parks on input survives past its per-turn timeout, while a truly hung invocation still times out.
- Browser verification covers the fresh-provider, fresh-agent flow and shows no later
RunFailedafter the agent is idle.
Activity
TheGreatAxios commentedon Sep 11, 2026
I'll get back to you on this shortly, let me take a look at the WIP board and see if this was impacted. I'm experimenting with MCP 1:1 and probing to ensure we have flexibility on this
fix(vendor): thread prepared-deploy pins and budget step timeouts (#713)
TheGreatAxios commentedon Oct 5, 2026
Fixed by #713. Re-checked on main (7f1aeea): a deployed worker left idle on input for ~150s stayed running and replied normally to a new message; the worker step carries no timeout, and the prepared deploy now forwards tool package pins.