@dreb/coding-agent 2.17.0 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +2 -1
- package/dist/cli/args.js.map +1 -1
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +1 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/sdk.d.ts +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +1 -0
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +1 -0
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/index.d.ts +6 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +9 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/subagent.d.ts +44 -1
- package/dist/core/tools/subagent.d.ts.map +1 -1
- package/dist/core/tools/subagent.js +206 -7
- package/dist/core/tools/subagent.js.map +1 -1
- package/dist/core/tools/wait.d.ts +40 -0
- package/dist/core/tools/wait.d.ts.map +1 -0
- package/dist/core/tools/wait.js +87 -0
- package/dist/core/tools/wait.js.map +1 -0
- package/docs/extensions.md +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait.js","sourceRoot":"","sources":["../../../src/core/tools/wait.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAe,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAuBtD,+EAA+E;AAC/E,SAAS;AAET,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC9B,MAAM,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC;QACX,WAAW,EAAE,wEAAwE;KACrF,CAAC,CACF;CACD,CAAC,CAAC;AAIH,+EAA+E;AAC/E,iBAAiB;AAEjB,MAAM,UAAU,cAAc,CAAC,IAAqC,EAAE,KAAU,EAAU;IACzF,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;IAC5B,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AAAA,CACjD;AAED,MAAM,UAAU,gBAAgB,CAC/B,MAAsF,EACtF,KAAU,EACD;IACT,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,aAAa,IAAI,EAAE,CAAC;IACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3F,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,kCAAgC,SAAS,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,4CAAwC,CAAC,CAAC;AAAA,CACnE;AAED,+EAA+E;AAC/E,kEAAgE;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAmE;IACjG,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,WAAW,EACV,yJAAyJ;IAE1J,UAAU,EAAE,UAAU;IAEtB,aAAa,EAAE,iFAAiF;IAEhG,gBAAgB,EAAE;QACjB,+HAA+H;QAC/H,kFAAgF;QAChF,2FAAyF;KACzF;IAED,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAqB,EAAE,OAAQ,EAAE,SAAU,EAAE,IAAK,EAAE;QAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,YAAU,CAAC;QAExD,OAAO;YACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;YAC1C,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,EAAqB,EAAE;YACzD,OAAO,EAAE,IAAI;SACb,CAAC;IAAA,CACF;IAED,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE;QAChC,MAAM,IAAI,GAAI,OAAO,CAAC,aAAkC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;QAC9C,MAAM,IAAI,GAAI,OAAO,CAAC,aAAkC,IAAI,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAa,EAAE,KAAK,CAAC,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IAAA,CACZ;CACD,CAAC;AAEF,+EAA+E;AAC/E,kFAAgF;AAChF,iFAAiF;AACjF,yFAAqF;AAErF,MAAM,UAAU,wBAAwB,CACvC,OAAyB,EACwC;IACjE,IAAI,CAAC,OAAO,EAAE,gBAAgB;QAAE,OAAO,kBAAkB,CAAC;IAE1D,OAAO;QACN,GAAG,kBAAkB;QACrB,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAqB,EAAE,OAAQ,EAAE,SAAU,EAAE,IAAK,EAAE;YAC9E,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;YAClD,MAAM,aAAa,GAAG,OAAO,CAAC,gBAAiB,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC,CAAC,YAAU,CAAC;YAExD,OAAO;gBACN,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC;gBAC1C,OAAO,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE;gBAClC,OAAO,EAAE,IAAI;aACb,CAAC;QAAA,CACF;KACD,CAAC;AAAA,CACF","sourcesContent":["/**\n * Wait tool — explicit no-op for models that don't know how to end a turn.\n *\n * Some models (notably Kimi) invent useless `bash` calls to simulate waiting.\n * This tool gives them a sanctioned no-op action that cleanly ends the turn.\n */\n\nimport { Text } from \"@dreb/tui\";\nimport { type Static, Type } from \"@sinclair/typebox\";\nimport type { ToolDefinition } from \"../extensions/types.js\";\n\n// ============================================================================\n// Types\n\n/** Minimal shape of a running background agent (avoids importing from subagent.ts to prevent circular deps). */\nexport interface WaitAgentInfo {\n\tagentId: string;\n\tagentType: string;\n\ttaskSummary: string;\n}\n\nexport interface WaitToolDetails {\n\treason: string | undefined;\n\trunningAgents: readonly WaitAgentInfo[];\n}\n\nexport interface WaitToolOptions {\n\t/** Returns currently running background agents. Injected by the factory to avoid circular imports. */\n\tgetRunningAgents?: () => readonly WaitAgentInfo[];\n}\n\n// ============================================================================\n// Schema\n\nconst waitSchema = Type.Object({\n\treason: Type.Optional(\n\t\tType.String({\n\t\t\tdescription: \"Optional reason for waiting (e.g. 'background subagent still running')\",\n\t\t}),\n\t),\n});\n\nexport type WaitToolInput = Static<typeof waitSchema>;\n\n// ============================================================================\n// Render helpers\n\nexport function formatWaitCall(args: { reason?: string } | undefined, theme: any): string {\n\tconst reason = args?.reason;\n\tif (reason) {\n\t\treturn `${theme.fg(\"toolTitle\", theme.bold(\"wait\"))} ${theme.fg(\"muted\", reason)}`;\n\t}\n\treturn theme.fg(\"toolTitle\", theme.bold(\"wait\"));\n}\n\nexport function formatWaitResult(\n\tresult: { content: Array<{ type: string; text?: string }>; details?: WaitToolDetails },\n\ttheme: any,\n): string {\n\tconst agents = result.details?.runningAgents ?? [];\n\tif (agents.length > 0) {\n\t\tconst agentList = agents.map((a) => `${a.agentId.slice(0, 12)} ${a.agentType}`).join(\", \");\n\t\treturn theme.fg(\"muted\", `→ doing nothing (waiting on: ${agentList})`);\n\t}\n\treturn theme.fg(\"muted\", \"→ doing nothing — no subagents running\");\n}\n\n// ============================================================================\n// Tool definition (singleton — no cwd or callback dependencies)\n\nexport const waitToolDefinition: ToolDefinition<typeof waitSchema, WaitToolDetails | undefined> = {\n\tname: \"wait\",\n\tlabel: \"wait\",\n\tdescription:\n\t\t\"Do nothing and end your turn. Use this when you are explicitly told to wait, or when background subagents are running and you have no other work to do.\",\n\n\tparameters: waitSchema,\n\n\tpromptSnippet: \"Do nothing and end your turn (use when waiting for background work to complete)\",\n\n\tpromptGuidelines: [\n\t\t\"Use `wait` only when explicitly told to wait, or when background subagents are still running and you have no other work to do\",\n\t\t\"Do NOT use `wait` as a general-purpose delay or sleep — it returns immediately\",\n\t\t\"If you need to wait for something, call `wait` once — do not loop or call it repeatedly\",\n\t],\n\n\tasync execute(_toolCallId, params: WaitToolInput, _signal?, _onUpdate?, _ctx?) {\n\t\tconst reason = params.reason?.trim() || undefined;\n\t\tconst text = reason ? `Waiting: ${reason}` : \"Waiting…\";\n\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\" as const, text }],\n\t\t\tdetails: { reason, runningAgents: [] as WaitAgentInfo[] },\n\t\t\tendTurn: true,\n\t\t};\n\t},\n\n\trenderCall(args, theme, context) {\n\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\ttext.setText(formatWaitCall(args, theme));\n\t\treturn text;\n\t},\n\n\trenderResult(result, _options, theme, context) {\n\t\tconst text = (context.lastComponent as Text | undefined) ?? new Text(\"\", 0, 0);\n\t\ttext.setText(formatWaitResult(result as any, theme));\n\t\treturn text;\n\t},\n};\n\n// ============================================================================\n// Factory — accepts optional getRunningAgents callback to show background agent\n// status in the result. The callback is injected here (rather than imported from\n// subagent.ts) to avoid a circular dependency through model-resolver → args → index.\n\nexport function createWaitToolDefinition(\n\toptions?: WaitToolOptions,\n): ToolDefinition<typeof waitSchema, WaitToolDetails | undefined> {\n\tif (!options?.getRunningAgents) return waitToolDefinition;\n\n\treturn {\n\t\t...waitToolDefinition,\n\t\tasync execute(_toolCallId, params: WaitToolInput, _signal?, _onUpdate?, _ctx?) {\n\t\t\tconst reason = params.reason?.trim() || undefined;\n\t\t\tconst runningAgents = options.getRunningAgents!();\n\t\t\tconst text = reason ? `Waiting: ${reason}` : \"Waiting…\";\n\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\" as const, text }],\n\t\t\t\tdetails: { reason, runningAgents },\n\t\t\t\tendTurn: true,\n\t\t\t};\n\t\t},\n\t};\n}\n"]}
|
package/docs/extensions.md
CHANGED
|
@@ -569,7 +569,7 @@ In the default parallel tool execution mode, sibling tool calls from the same as
|
|
|
569
569
|
import { isToolCallEventType } from "@dreb/coding-agent";
|
|
570
570
|
|
|
571
571
|
dreb.on("tool_call", async (event, ctx) => {
|
|
572
|
-
// event.toolName - "bash", "read", "write", "edit", "grep", "find", "ls", "web_search", "web_fetch", "subagent", "search", "skill", "tasks_update", "suggest_next", or custom tool names
|
|
572
|
+
// event.toolName - "bash", "read", "write", "edit", "grep", "find", "ls", "web_search", "web_fetch", "subagent", "wait", "search", "skill", "tasks_update", "suggest_next", or custom tool names
|
|
573
573
|
// event.toolCallId
|
|
574
574
|
// event.input - tool parameters
|
|
575
575
|
|
|
@@ -1474,7 +1474,7 @@ async execute(toolCallId, params) {
|
|
|
1474
1474
|
|
|
1475
1475
|
### Overriding Built-in Tools
|
|
1476
1476
|
|
|
1477
|
-
Extensions can override built-in tools (`read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`, `web_search`, `web_fetch`, `subagent`, `search`) by registering a tool with the same name. Interactive mode displays a warning when this happens. The factory-only tools (`skill`, `tasks_update`, `suggest_next`) can also be overridden.
|
|
1477
|
+
Extensions can override built-in tools (`read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`, `web_search`, `web_fetch`, `subagent`, `wait`, `search`) by registering a tool with the same name. Interactive mode displays a warning when this happens. The factory-only tools (`skill`, `tasks_update`, `suggest_next`) can also be overridden.
|
|
1478
1478
|
|
|
1479
1479
|
```bash
|
|
1480
1480
|
# Extension's read tool replaces built-in read
|