Duyetbot Agent
Reference

sdk.query()

Async generator for agent execution. Stream messages, tools, results. Options: model/tools/agents/abort.

TL;DR: for await (const msg of sdk.query("Hello", {tools})) -> Stream user/assistant/result. AbortController support.

Table of Contents

Signature

From query.ts

export async function* query(
  input: QueryInput,  // string | AsyncIterable<string>
  options?: QueryOptions,
  controller?: QueryController  // {interrupt(), signal}
): AsyncGenerator<SDKAnyMessage>

Options

PropTypeDesc
modelstringLLM model
toolsSDKTool[]MCP-converted tools
agentsSubagentConfig[]Delegate patterns
systemPromptstringCustom system
sessionIdstringResume context

Stream Messages

for await (const msg of query("Hi")) {
  if (msg.type === 'user') console.log('User:', msg.content);
  if (msg.type === 'assistant') console.log('AI:', msg.content);
  if (msg.type === 'result') console.log('Tokens:', msg.totalTokens);
}

Types types.ts

TypeFields
usercontent, uuid
assistantcontent, stopReason
resultcontent, inputTokens, duration

Usage

Playground:

// Single shot
const result = await querySingle("2+2?", {model: "claude-3-haiku"});
// {content: "4", totalTokens: 10}
 
// Collect all
const messages = await collectMessages("Analyze code", {tools: [bashTool]});

Abort:

const ctrl = createQueryController();
setTimeout(() => ctrl.interrupt(), 5000);
for await (const msg of query("Long task", {}, ctrl)) { /* ... */ }

Errors

Handled as system msg. Validation fails -> early yield.

Quiz: query("Hi", {tools}) -> MCP server? A: duyetbot-tools ✅

Try: Import sdk, run playground -> Stream live!

Related: Subagents ->

On this page