@ouro.bot/cli 0.1.0-alpha.351 → 0.1.0-alpha.352

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
@@ -2,13 +2,11 @@
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
4
  {
5
- "version": "0.1.0-alpha.351",
5
+ "version": "0.1.0-alpha.352",
6
6
  "changes": [
7
- "Surface tool description rewritten from 'surface progress' to 'send a message to someone' makes it clear the tool is for interpersonal messaging, not status reporting.",
8
- "Inner dialog prompt contract now guides agents to use rest(note) for heartbeat state and ponder(reflection) for deeper thoughts, keeping surface strictly for words meant for another person.",
9
- "Removed [surfaced from inner dialog] prefix from synthetic session messages provenance is tracked via captureKind: 'synthetic', the prefix was redundant and created echo loops.",
10
- "Obligation summaries and attention queue headers reframed as structured internal data ([internal] tags) instead of surface-ready prose.",
11
- "Shared proactive-content-guard module blocks internal content (heartbeat, check-in, task board, obligation status, meta markers) from BlueBubbles and Teams proactive sends."
7
+ "Settle tool description now communicates turn-ending semantics: 'deliver your response and end your turn' with explicit guidance against settling with status updates mid-task.",
8
+ "Observe tool now available in all outward channels including 1:1 chats, not just groups and reactions agents can absorb messages without responding when the moment doesn't call for words.",
9
+ "Autonomous execution prompt contract added: when told to work autonomously, agents use ponder to absorb new messages and continue using tools, settling only with the final result."
12
10
  ]
13
11
  },
14
12
  {
@@ -556,8 +556,7 @@ async function runAgent(messages, callbacks, channel, signal, options) {
556
556
  while (!done) {
557
557
  // Channel-based tool filtering:
558
558
  // - Inner dialog: exclude send_message (delivery via surface), observe (no one to observe)
559
- // - 1:1 sessions: exclude observe (can't ignore someone talking directly to you)
560
- // - Group chats: observe available
559
+ // - All outward channels (1:1, group, reaction): observe available
561
560
  //
562
561
  // ponder, settle/rest, surface, and observe are always assembled based on channel context.
563
562
  // ponder is available in ALL channels (outer: think privately, inner: keep turning).
@@ -571,7 +570,7 @@ async function runAgent(messages, callbacks, channel, signal, options) {
571
570
  ...filteredBaseTools,
572
571
  tools_1.ponderTool,
573
572
  ...(isInnerDialog ? [tools_2.surfaceToolDef, tools_1.restTool] : []),
574
- ...((currentContext?.isGroupChat || options?.isReactionSignal) && !isInnerDialog ? [tools_1.observeTool] : []),
573
+ ...(!isInnerDialog ? [tools_1.observeTool] : []),
575
574
  ...(!isInnerDialog ? [tools_1.settleTool] : []),
576
575
  ];
577
576
  const steeringFollowUps = options?.drainSteeringFollowUps?.() ?? [];
@@ -609,6 +609,8 @@ function toolContractsSection(channel, options) {
609
609
  lines.push(`- When I am ready to respond to the user, I call \`settle\`.`);
610
610
  lines.push(`- \`settle\` must be the only tool call in that turn.`);
611
611
  lines.push(`- I do not call no-op tools before \`settle\`.`);
612
+ lines.push(`- when told to work autonomously, I use ponder to absorb new messages and continue using tools. I settle only with the final result.`);
613
+ lines.push(`- if nothing calls for words, I observe.`);
612
614
  }
613
615
  }
614
616
  return lines.join("\n");
@@ -72,7 +72,7 @@ exports.settleTool = {
72
72
  type: "function",
73
73
  function: {
74
74
  name: "settle",
75
- description: "respond to the user with your message. call this tool when you are ready to deliver your response. Only call when you have a substantive response. If you're settling with 'I'll look into that,' you probably should be using a tool instead.",
75
+ description: "deliver your response and end your turn this hands control back to the user. only settle when your work is complete, you're genuinely blocked, or the user asked a direct question that needs an answer now. do not settle with status updates mid-task. if you're settling with 'I'll look into that,' you probably should be using a tool instead.",
76
76
  parameters: {
77
77
  type: "object",
78
78
  properties: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.351",
3
+ "version": "0.1.0-alpha.352",
4
4
  "main": "dist/heart/daemon/ouro-entry.js",
5
5
  "bin": {
6
6
  "cli": "dist/heart/daemon/ouro-bot-entry.js",