@ouro.bot/cli 0.1.0-alpha.154 → 0.1.0-alpha.155

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.155",
6
+ "changes": [
7
+ "polish(debug): dynamic toggle, richer descriptions, human-readable results"
8
+ ]
9
+ },
4
10
  {
5
11
  "version": "0.1.0-alpha.154",
6
12
  "changes": [
@@ -8,22 +8,28 @@ function createToolActivityCallbacks(options) {
8
8
  component: "engine",
9
9
  event: "engine.tool_activity_callbacks_created",
10
10
  message: "tool activity callbacks initialized",
11
- meta: { isDebug: options.isDebug },
11
+ meta: {},
12
12
  });
13
+ // Track the last description so we can reference it in END messages
14
+ let lastDescription = null;
13
15
  return {
14
16
  onToolStart(name, args) {
15
17
  const description = (0, tool_description_1.humanReadableToolDescription)(name, args);
16
18
  if (description === null)
17
- return; // hidden tool (settle, rest)
19
+ return; // hidden tool (settle, rest, descend)
20
+ lastDescription = description;
18
21
  options.onDescription(description);
19
22
  },
20
23
  onToolEnd(name, summary, success) {
24
+ const desc = lastDescription ?? name;
25
+ // Strip trailing "..." from description for the result line
26
+ const cleanDesc = desc.endsWith("...") ? desc.slice(0, -3) : desc;
21
27
  if (!success) {
22
- options.onFailure(`${name} failed: ${summary}`);
28
+ options.onFailure(`\u2717 ${cleanDesc} — ${summary}`);
23
29
  return;
24
30
  }
25
- if (options.isDebug) {
26
- options.onResult(`${name}: ${summary}`);
31
+ if (options.isDebug()) {
32
+ options.onResult(`\u2713 ${cleanDesc}`);
27
33
  }
28
34
  },
29
35
  };
@@ -12,6 +12,7 @@ function truncate(text, max) {
12
12
  return text.slice(0, max - 1) + "\u2026";
13
13
  }
14
14
  const TOOL_DESCRIPTIONS = {
15
+ // File operations
15
16
  shell: (args) => {
16
17
  const cmd = args.command;
17
18
  if (!cmd)
@@ -36,11 +37,11 @@ const TOOL_DESCRIPTIONS = {
36
37
  return "editing a file...";
37
38
  return `editing ${basename(fp)}...`;
38
39
  },
39
- recall: (args) => {
40
- const q = args.query;
41
- if (!q)
42
- return "searching memory...";
43
- return `searching memory for '${truncate(q, 40)}'...`;
40
+ glob: (args) => {
41
+ const p = args.pattern;
42
+ if (!p)
43
+ return "searching for files...";
44
+ return `searching for ${truncate(p, 40)}...`;
44
45
  },
45
46
  grep: (args) => {
46
47
  const p = args.pattern;
@@ -48,21 +49,65 @@ const TOOL_DESCRIPTIONS = {
48
49
  return "searching code...";
49
50
  return `searching code for '${truncate(p, 40)}'...`;
50
51
  },
51
- glob: (args) => {
52
- const p = args.pattern;
53
- if (!p)
54
- return "searching for files...";
55
- return `searching for ${truncate(p, 40)}...`;
52
+ // Memory and knowledge
53
+ recall: (args) => {
54
+ const q = args.query;
55
+ if (!q)
56
+ return "searching memory...";
57
+ return `searching memory for '${truncate(q, 40)}'...`;
58
+ },
59
+ diary_write: (args) => {
60
+ const about = args.about;
61
+ return about ? `noting something about ${truncate(about, 30)}...` : "noting something down...";
62
+ },
63
+ save_friend_note: () => "making a note about you...",
64
+ get_friend_note: () => "checking my notes...",
65
+ load_skill: (args) => {
66
+ const name = args.name || args.skill;
67
+ return name ? `loading ${name} skill...` : "loading a skill...";
68
+ },
69
+ // Session and context
70
+ query_session: (args) => {
71
+ const mode = args.mode;
72
+ if (mode === "search")
73
+ return `searching session for '${truncate(args.query || "", 30)}'...`;
74
+ if (mode === "status")
75
+ return "checking inner dialog status...";
76
+ return "checking session history...";
77
+ },
78
+ web_search: (args) => {
79
+ const q = args.query;
80
+ return q ? `searching the web for '${truncate(q, 35)}'...` : "searching the web...";
81
+ },
82
+ coding_spawn: (args) => {
83
+ const runner = args.runner;
84
+ return runner ? `starting ${runner} coding session...` : "starting coding session...";
85
+ },
86
+ coding_status: () => "checking coding sessions...",
87
+ coding_tail: () => "reading coding output...",
88
+ coding_kill: () => "stopping coding session...",
89
+ bridge_manage: () => "managing conversation bridge...",
90
+ // Communication
91
+ send_message: (args) => {
92
+ const to = args.to;
93
+ return to ? `sending a message to ${to}...` : "sending a message...";
94
+ },
95
+ surface: () => "sharing a thought...",
96
+ // Metacognitive (agent's inner life)
97
+ ponder: (args) => {
98
+ const thought = args.thought;
99
+ return thought ? `thinking about ${truncate(thought, 40)}...` : "thinking deeper...";
56
100
  },
57
- query_session: () => "checking session history...",
58
- web_search: () => "searching the web...",
59
- coding_spawn: () => "starting coding session...",
60
- ponder: () => "thinking deeper...",
61
101
  observe: () => "listening...",
62
- diary_write: () => "noting something down...",
63
- save_friend_note: () => "making a note...",
102
+ claude: () => "reasoning...",
103
+ set_reasoning_effort: (args) => {
104
+ const level = args.level;
105
+ return level ? `setting thinking depth to ${level}...` : "adjusting thinking depth...";
106
+ },
107
+ // Hidden — these ARE the response or end-of-turn
64
108
  settle: () => null,
65
109
  rest: () => null,
110
+ descend: () => null,
66
111
  };
67
112
  function humanReadableToolDescription(name, args) {
68
113
  (0, runtime_1.emitNervesEvent)({
@@ -408,8 +408,8 @@ function createBlueBubblesCallbacks(client, chat, replyTarget, isGroupChat) {
408
408
  /* v8 ignore next -- onResult only called in debug mode; tested via tool-activity-callbacks.test.ts @preserve */
409
409
  onResult: (text) => sendStatus(text),
410
410
  /* v8 ignore next -- onFailure only called on tool failure; tested via tool-activity-callbacks.test.ts @preserve */
411
- onFailure: (text) => sendStatus(`\u2717 ${text}`),
412
- isDebug: (0, commands_1.getDebugMode)(),
411
+ onFailure: (text) => sendStatus(text),
412
+ isDebug: commands_1.getDebugMode,
413
413
  });
414
414
  return {
415
415
  onModelStart() {
@@ -87,11 +87,16 @@ function registerDefaultCommands(registry) {
87
87
  });
88
88
  registry.register({
89
89
  name: "debug",
90
- description: "toggle debug mode (verbose tool output)",
91
- channels: ["cli", "teams", "bluebubbles"],
90
+ description: "toggle debug mode — see more detail about what I'm doing",
91
+ channels: ["cli", "teams", "bluebubbles", "mcp"],
92
92
  handler: () => {
93
93
  _debugMode = !_debugMode;
94
- return { action: "response", message: `debug mode: ${_debugMode ? "ON" : "OFF"}` };
94
+ return {
95
+ action: "response",
96
+ message: _debugMode
97
+ ? "debug mode on — you'll see more detail about what I'm doing"
98
+ : "debug mode off — back to clean output",
99
+ };
95
100
  },
96
101
  });
97
102
  (0, runtime_1.emitNervesEvent)({
@@ -433,8 +433,8 @@ function createTeamsCallbacks(stream, controller, sendMessage, options) {
433
433
  /* v8 ignore next -- onResult only called in debug mode; tested via tool-activity-callbacks.test.ts @preserve */
434
434
  onResult: (text) => safeUpdate(text),
435
435
  /* v8 ignore next -- onFailure tested via onToolEnd failure test @preserve */
436
- onFailure: (text) => safeUpdate(`\u2717 ${text}`),
437
- isDebug: (0, commands_2.getDebugMode)(),
436
+ onFailure: (text) => safeUpdate(text),
437
+ isDebug: commands_2.getDebugMode,
438
438
  });
439
439
  return {
440
440
  onToolStart: (name, args) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ouro.bot/cli",
3
- "version": "0.1.0-alpha.154",
3
+ "version": "0.1.0-alpha.155",
4
4
  "main": "dist/heart/daemon/ouro-entry.js",
5
5
  "bin": {
6
6
  "cli": "dist/heart/daemon/ouro-bot-entry.js",