@ouro.bot/cli 0.1.0-alpha.919 → 0.1.0-alpha.920

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/changelog.json CHANGED
@@ -1,6 +1,12 @@
1
1
  {
2
2
  "_note": "This changelog is maintained as part of the PR/version-bump workflow. Agent-curated, not auto-generated. Agents read this file directly via read_file to understand what changed between versions.",
3
3
  "versions": [
4
+ {
5
+ "version": "0.1.0-alpha.920",
6
+ "changes": [
7
+ "Accept empty provider tool arguments as an empty object so no-argument tools execute without exhausting the turn."
8
+ ]
9
+ },
4
10
  {
5
11
  "version": "0.1.0-alpha.919",
6
12
  "changes": [
@@ -1,5 +1,5 @@
1
1
  {
2
- "runtimeVersion": "0.1.0-alpha.919",
2
+ "runtimeVersion": "0.1.0-alpha.920",
3
3
  "bundleSchemaVersion": 3,
4
4
  "lastUpdated": "2026-09-03T00:00:00.000Z"
5
5
  }
@@ -1,7 +1,7 @@
1
1
  <?xml version="1.0"?>
2
2
  <Container version="2">
3
3
  <Name>ouro-butler</Name>
4
- <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.919</Repository>
4
+ <Repository>ghcr.io/ourostack/ouroboros-butler:0.1.0-alpha.920</Repository>
5
5
  <Registry>https://github.com/ourostack/ouroboros/pkgs/container/ouroboros-butler</Registry>
6
6
  <Network>host</Network>
7
7
  <Shell>sh</Shell>
@@ -5,6 +5,7 @@ exports.finalizeSettleStream = finalizeSettleStream;
5
5
  exports.truncateResponsesFunctionCallOutput = truncateResponsesFunctionCallOutput;
6
6
  exports.toResponsesInput = toResponsesInput;
7
7
  exports.toResponsesTools = toResponsesTools;
8
+ exports.toolArgumentsOrEmptyObject = toolArgumentsOrEmptyObject;
8
9
  exports.streamChatCompletion = streamChatCompletion;
9
10
  exports.streamResponsesApi = streamResponsesApi;
10
11
  const runtime_1 = require("../nerves/runtime");
@@ -562,6 +563,10 @@ function toResponsesTools(ccTools) {
562
563
  strict: false,
563
564
  }));
564
565
  }
566
+ /** Providers send an empty string for a tool called with no arguments; every reader expects a JSON object. */
567
+ function toolArgumentsOrEmptyObject(raw) {
568
+ return raw.trim() === "" ? "{}" : raw;
569
+ }
565
570
  async function streamChatCompletion(client, createParams, callbacks, signal, eagerSettleStreaming = true) {
566
571
  (0, runtime_1.emitNervesEvent)({
567
572
  component: "engine",
@@ -723,7 +728,7 @@ async function streamChatCompletion(client, createParams, callbacks, signal, eag
723
728
  // Flush any remaining buffer at end of stream
724
729
  if (contentBuf)
725
730
  processContentBuf(true);
726
- const completedToolCalls = Object.values(toolCalls);
731
+ const completedToolCalls = Object.values(toolCalls).map((call) => ({ ...call, arguments: toolArgumentsOrEmptyObject(call.arguments) }));
727
732
  let settleFinalization;
728
733
  if (signal?.aborted) {
729
734
  textOutput.discard();
@@ -823,7 +828,7 @@ async function streamResponsesApi(client, createParams, callbacks, signal, eager
823
828
  toolCalls.push({
824
829
  id: String(event.item.call_id),
825
830
  name: String(event.item.name),
826
- arguments: String(event.item.arguments),
831
+ arguments: toolArgumentsOrEmptyObject(String(event.item.arguments)),
827
832
  });
828
833
  currentToolCall = null;
829
834
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.919",
3
+ "version": "0.1.0-alpha.920",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@ouro.bot/cli",
9
- "version": "0.1.0-alpha.919",
9
+ "version": "0.1.0-alpha.920",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "^0.78.0",
12
12
  "@azure/identity": "^4.13.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.919",
3
+ "version": "0.1.0-alpha.920",
4
4
  "engines": {
5
5
  "node": ">=22"
6
6
  },