Problem
Direct actor tools (e.g. apify--rag-web-browser) still use the old execution path (callActorGetDataset → buildActorResponseContent) which returns items inline with the pre-v4 { runId, datasetId, items, instructions } shape. PR #825 (branch feat/async-call-actor) ships the canonical RunResponse for call-actor and get-actor-run but explicitly defers this migration. The result: two different response shapes depending on which tool the LLM uses.
Proposed solution
Replace defaultActorExecutor to call actor.start() then fetchActorRunData() — the same path call-actor already uses — and return buildGetActorRunSuccessResponse(). Items are no longer inlined; the LLM follows the nextStep hint to get-dataset-items.
Internal repo: update any tests/code reading items / instructions / top-level datasetId from direct actor tool responses.
Blocked by: PR #825
⚠️ Schema gotcha: outputSchema.storages.datasets.default.itemsSchema.properties declares per-Actor row shape (e.g. { url: { type: 'string' } }). LLMs may read this as "url is returned in structuredContent" — it isn't. Rows live in the referenced dataset; fetch with get-dataset-items. Mitigated by itemsSchema.description. Fallback if LLMs misread: move the hint to tool description / _meta.
Problem
Direct actor tools (e.g.
apify--rag-web-browser) still use the old execution path (callActorGetDataset→buildActorResponseContent) which returns items inline with the pre-v4{ runId, datasetId, items, instructions }shape. PR #825 (branchfeat/async-call-actor) ships the canonicalRunResponseforcall-actorandget-actor-runbut explicitly defers this migration. The result: two different response shapes depending on which tool the LLM uses.Proposed solution
Replace
defaultActorExecutorto callactor.start()thenfetchActorRunData()— the same pathcall-actoralready uses — and returnbuildGetActorRunSuccessResponse(). Items are no longer inlined; the LLM follows thenextStephint toget-dataset-items.Internal repo: update any tests/code reading
items/instructions/ top-leveldatasetIdfrom direct actor tool responses.Blocked by: PR #825
outputSchema.storages.datasets.default.itemsSchema.propertiesdeclares per-Actor row shape (e.g.{ url: { type: 'string' } }). LLMs may read this as "urlis returned instructuredContent" — it isn't. Rows live in the referenced dataset; fetch withget-dataset-items. Mitigated byitemsSchema.description. Fallback if LLMs misread: move the hint to tooldescription/_meta.