@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: {
|
|
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(
|
|
28
|
+
options.onFailure(`\u2717 ${cleanDesc} — ${summary}`);
|
|
23
29
|
return;
|
|
24
30
|
}
|
|
25
|
-
if (options.isDebug) {
|
|
26
|
-
options.onResult(
|
|
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
|
-
|
|
40
|
-
const
|
|
41
|
-
if (!
|
|
42
|
-
return "searching
|
|
43
|
-
return `searching
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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
|
-
|
|
63
|
-
|
|
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(
|
|
412
|
-
isDebug:
|
|
411
|
+
onFailure: (text) => sendStatus(text),
|
|
412
|
+
isDebug: commands_1.getDebugMode,
|
|
413
413
|
});
|
|
414
414
|
return {
|
|
415
415
|
onModelStart() {
|
package/dist/senses/commands.js
CHANGED
|
@@ -87,11 +87,16 @@ function registerDefaultCommands(registry) {
|
|
|
87
87
|
});
|
|
88
88
|
registry.register({
|
|
89
89
|
name: "debug",
|
|
90
|
-
description: "toggle debug mode
|
|
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 {
|
|
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)({
|
package/dist/senses/teams.js
CHANGED
|
@@ -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(
|
|
437
|
-
isDebug:
|
|
436
|
+
onFailure: (text) => safeUpdate(text),
|
|
437
|
+
isDebug: commands_2.getDebugMode,
|
|
438
438
|
});
|
|
439
439
|
return {
|
|
440
440
|
onToolStart: (name, args) => {
|