openclawdreams 3.0.4 ā 3.0.6
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.md +26 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/dist/bin/electricsheep.d.ts +0 -3
- package/dist/bin/electricsheep.d.ts.map +0 -1
- package/dist/bin/electricsheep.js +0 -4
- package/dist/bin/electricsheep.js.map +0 -1
- package/dist/bin/openclawdreams.d.ts +0 -3
- package/dist/bin/openclawdreams.d.ts.map +0 -1
- package/dist/bin/openclawdreams.js +0 -4
- package/dist/bin/openclawdreams.js.map +0 -1
- package/dist/src/backfill.d.ts +0 -2
- package/dist/src/backfill.d.ts.map +0 -1
- package/dist/src/backfill.js +0 -63
- package/dist/src/backfill.js.map +0 -1
- package/dist/src/budget.d.ts +0 -28
- package/dist/src/budget.d.ts.map +0 -1
- package/dist/src/budget.js +0 -117
- package/dist/src/budget.js.map +0 -1
- package/dist/src/cli.d.ts +0 -19
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -584
- package/dist/src/cli.js.map +0 -1
- package/dist/src/config.d.ts +0 -76
- package/dist/src/config.d.ts.map +0 -1
- package/dist/src/config.js +0 -178
- package/dist/src/config.js.map +0 -1
- package/dist/src/crypto.d.ts +0 -19
- package/dist/src/crypto.d.ts.map +0 -1
- package/dist/src/crypto.js +0 -70
- package/dist/src/crypto.js.map +0 -1
- package/dist/src/dreamer.d.ts +0 -68
- package/dist/src/dreamer.d.ts.map +0 -1
- package/dist/src/dreamer.js +0 -550
- package/dist/src/dreamer.js.map +0 -1
- package/dist/src/entropy.d.ts +0 -23
- package/dist/src/entropy.d.ts.map +0 -1
- package/dist/src/entropy.js +0 -188
- package/dist/src/entropy.js.map +0 -1
- package/dist/src/filter.d.ts +0 -30
- package/dist/src/filter.d.ts.map +0 -1
- package/dist/src/filter.js +0 -124
- package/dist/src/filter.js.map +0 -1
- package/dist/src/identity.d.ts +0 -29
- package/dist/src/identity.d.ts.map +0 -1
- package/dist/src/identity.js +0 -83
- package/dist/src/identity.js.map +0 -1
- package/dist/src/index.d.ts +0 -14
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -463
- package/dist/src/index.js.map +0 -1
- package/dist/src/ingestion.d.ts +0 -22
- package/dist/src/ingestion.d.ts.map +0 -1
- package/dist/src/ingestion.js +0 -101
- package/dist/src/ingestion.js.map +0 -1
- package/dist/src/llm.d.ts +0 -26
- package/dist/src/llm.d.ts.map +0 -1
- package/dist/src/llm.js +0 -40
- package/dist/src/llm.js.map +0 -1
- package/dist/src/logger.d.ts +0 -6
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -32
- package/dist/src/logger.js.map +0 -1
- package/dist/src/memory.d.ts +0 -96
- package/dist/src/memory.d.ts.map +0 -1
- package/dist/src/memory.js +0 -467
- package/dist/src/memory.js.map +0 -1
- package/dist/src/meta-loop.d.ts +0 -23
- package/dist/src/meta-loop.d.ts.map +0 -1
- package/dist/src/meta-loop.js +0 -72
- package/dist/src/meta-loop.js.map +0 -1
- package/dist/src/moltbook-search.d.ts +0 -23
- package/dist/src/moltbook-search.d.ts.map +0 -1
- package/dist/src/moltbook-search.js +0 -85
- package/dist/src/moltbook-search.js.map +0 -1
- package/dist/src/moltbook.d.ts +0 -34
- package/dist/src/moltbook.d.ts.map +0 -1
- package/dist/src/moltbook.js +0 -192
- package/dist/src/moltbook.js.map +0 -1
- package/dist/src/nightmare.d.ts +0 -11
- package/dist/src/nightmare.d.ts.map +0 -1
- package/dist/src/nightmare.js +0 -126
- package/dist/src/nightmare.js.map +0 -1
- package/dist/src/notify.d.ts +0 -20
- package/dist/src/notify.d.ts.map +0 -1
- package/dist/src/notify.js +0 -95
- package/dist/src/notify.js.map +0 -1
- package/dist/src/persona.d.ts +0 -30
- package/dist/src/persona.d.ts.map +0 -1
- package/dist/src/persona.js +0 -292
- package/dist/src/persona.js.map +0 -1
- package/dist/src/reflection.d.ts +0 -26
- package/dist/src/reflection.d.ts.map +0 -1
- package/dist/src/reflection.js +0 -127
- package/dist/src/reflection.js.map +0 -1
- package/dist/src/rhythm.d.ts +0 -19
- package/dist/src/rhythm.d.ts.map +0 -1
- package/dist/src/rhythm.js +0 -130
- package/dist/src/rhythm.js.map +0 -1
- package/dist/src/state.d.ts +0 -7
- package/dist/src/state.d.ts.map +0 -1
- package/dist/src/state.js +0 -40
- package/dist/src/state.js.map +0 -1
- package/dist/src/synthesis.d.ts +0 -29
- package/dist/src/synthesis.d.ts.map +0 -1
- package/dist/src/synthesis.js +0 -144
- package/dist/src/synthesis.js.map +0 -1
- package/dist/src/topics.d.ts +0 -19
- package/dist/src/topics.d.ts.map +0 -1
- package/dist/src/topics.js +0 -84
- package/dist/src/topics.js.map +0 -1
- package/dist/src/types.d.ts +0 -253
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -5
- package/dist/src/types.js.map +0 -1
- package/dist/src/vocabulary.d.ts +0 -18
- package/dist/src/vocabulary.d.ts.map +0 -1
- package/dist/src/vocabulary.js +0 -121
- package/dist/src/vocabulary.js.map +0 -1
- package/dist/src/waking.d.ts +0 -27
- package/dist/src/waking.d.ts.map +0 -1
- package/dist/src/waking.js +0 -188
- package/dist/src/waking.js.map +0 -1
- package/dist/src/web-search.d.ts +0 -23
- package/dist/src/web-search.d.ts.map +0 -1
- package/dist/src/web-search.js +0 -64
- package/dist/src/web-search.js.map +0 -1
package/dist/src/cli.js
DELETED
|
@@ -1,584 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ElectricSheep CLI.
|
|
3
|
-
*
|
|
4
|
-
* Provides utility commands for inspecting agent state.
|
|
5
|
-
* Core agent behavior (check, dream, journal) runs via OpenClaw.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* openclawdreams register --name "Name" --description "Bio"
|
|
9
|
-
* openclawdreams status # show agent status and memory stats
|
|
10
|
-
* openclawdreams dreams # list saved dream journals
|
|
11
|
-
*/
|
|
12
|
-
import { Command } from "commander";
|
|
13
|
-
import chalk from "chalk";
|
|
14
|
-
import { readdirSync, readFileSync } from "node:fs";
|
|
15
|
-
import { resolve } from "node:path";
|
|
16
|
-
import { setVerbose } from "./logger.js";
|
|
17
|
-
import { getDreamsDir, getNightmaresDir } from "./config.js";
|
|
18
|
-
/**
|
|
19
|
-
* Register all ElectricSheep subcommands onto a parent Command.
|
|
20
|
-
* Used both by the standalone bin and by api.registerCli().
|
|
21
|
-
*/
|
|
22
|
-
export function registerCommands(parent) {
|
|
23
|
-
parent
|
|
24
|
-
.option("-v, --verbose", "Enable verbose logging")
|
|
25
|
-
.hook("preAction", (thisCommand) => {
|
|
26
|
-
const opts = thisCommand.opts();
|
|
27
|
-
if (opts.verbose)
|
|
28
|
-
setVerbose(true);
|
|
29
|
-
});
|
|
30
|
-
parent
|
|
31
|
-
.command("register")
|
|
32
|
-
.description("Register a new agent on Moltbook")
|
|
33
|
-
.requiredOption("--name <name>", "Agent name on Moltbook")
|
|
34
|
-
.requiredOption("--description <desc>", "Agent description")
|
|
35
|
-
.option("--dry-run", "Run without persisting state")
|
|
36
|
-
.action(async (opts) => {
|
|
37
|
-
if (opts.dryRun) {
|
|
38
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] Registering agent (no state will be saved)...\n"));
|
|
39
|
-
console.log(`${chalk.bold("Name:")} ${opts.name}`);
|
|
40
|
-
console.log(`${chalk.bold("Description:")} ${opts.description}`);
|
|
41
|
-
console.log(chalk.yellow("\n--- End Simulation ---\n"));
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const { MoltbookClient } = await import("./moltbook.js");
|
|
45
|
-
const client = new MoltbookClient();
|
|
46
|
-
const result = await client.register(opts.name, opts.description);
|
|
47
|
-
const agent = (result.agent ?? result);
|
|
48
|
-
console.log(chalk.green.bold("\nRegistered!\n"));
|
|
49
|
-
console.log(`${chalk.bold("API Key:")} ${agent.api_key ?? "?"}`);
|
|
50
|
-
console.log(`${chalk.bold("Claim URL:")} ${agent.claim_url ?? "?"}`);
|
|
51
|
-
console.log(`${chalk.bold("Verification:")} ${agent.verification_code ?? "?"}`);
|
|
52
|
-
console.log(chalk.yellow("\nYour API key has been saved to credentials.json automatically"));
|
|
53
|
-
console.log(chalk.yellow("Visit the claim URL and post the verification tweet"));
|
|
54
|
-
});
|
|
55
|
-
parent
|
|
56
|
-
.command("status")
|
|
57
|
-
.description("Show agent status, memory stats, and recent state")
|
|
58
|
-
.action(async () => {
|
|
59
|
-
const { deepMemoryStats } = await import("./memory.js");
|
|
60
|
-
const { loadState } = await import("./state.js");
|
|
61
|
-
const { MoltbookClient } = await import("./moltbook.js");
|
|
62
|
-
const { getBudgetStatus } = await import("./budget.js");
|
|
63
|
-
const state = loadState();
|
|
64
|
-
const memStats = deepMemoryStats();
|
|
65
|
-
const budget = getBudgetStatus();
|
|
66
|
-
console.log(chalk.cyan.bold("\nElectricSheep Status\n"));
|
|
67
|
-
// Token budget
|
|
68
|
-
if (budget.enabled) {
|
|
69
|
-
const pct = Math.round((budget.used / budget.limit) * 100);
|
|
70
|
-
const color = pct >= 90 ? chalk.red : pct >= 70 ? chalk.yellow : chalk.green;
|
|
71
|
-
console.log(chalk.bold("Token Budget:"));
|
|
72
|
-
console.log(` ${color(`${budget.used.toLocaleString()} / ${budget.limit.toLocaleString()} tokens (${pct}%)`)}` +
|
|
73
|
-
` ${chalk.dim(`remaining: ${budget.remaining.toLocaleString()}`)}`);
|
|
74
|
-
console.log(` ${chalk.dim(`date: ${budget.date} UTC`)}`);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
console.log(chalk.bold("Token Budget:") + chalk.dim(" disabled"));
|
|
78
|
-
}
|
|
79
|
-
// State
|
|
80
|
-
console.log(`\n${chalk.bold("Agent State:")}`);
|
|
81
|
-
for (const [k, v] of Object.entries(state)) {
|
|
82
|
-
if (k.startsWith("budget_"))
|
|
83
|
-
continue;
|
|
84
|
-
console.log(` ${chalk.bold(k)}: ${String(v)}`);
|
|
85
|
-
}
|
|
86
|
-
// Memory stats
|
|
87
|
-
console.log(`${chalk.bold("Deep Memory:")} ${memStats.total_memories} total, ${memStats.undreamed} undreamed`);
|
|
88
|
-
if (Object.keys(memStats.categories).length > 0) {
|
|
89
|
-
console.log(`${chalk.bold("Categories:")} ${JSON.stringify(memStats.categories)}`);
|
|
90
|
-
}
|
|
91
|
-
// Moltbook status
|
|
92
|
-
try {
|
|
93
|
-
const client = new MoltbookClient();
|
|
94
|
-
const moltbookStatus = await client.status();
|
|
95
|
-
console.log(`\n${chalk.bold("Moltbook:")} ${moltbookStatus.status ?? "?"}`);
|
|
96
|
-
const profile = await client.me();
|
|
97
|
-
const agent = (profile.agent ?? profile);
|
|
98
|
-
console.log(`${chalk.bold("Karma:")} ${agent.karma ?? 0}`);
|
|
99
|
-
}
|
|
100
|
-
catch {
|
|
101
|
-
console.log(chalk.yellow("\nMoltbook: not connected"));
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
parent
|
|
105
|
-
.command("dreams")
|
|
106
|
-
.description("List saved dream journals")
|
|
107
|
-
.option("--dry-run", "Run without persisting state")
|
|
108
|
-
.action((opts) => {
|
|
109
|
-
if (opts.dryRun) {
|
|
110
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] Listing dreams (no state will be saved)...\n"));
|
|
111
|
-
}
|
|
112
|
-
let dreamFiles;
|
|
113
|
-
try {
|
|
114
|
-
dreamFiles = readdirSync(getDreamsDir())
|
|
115
|
-
.filter((f) => f.endsWith(".md"))
|
|
116
|
-
.sort()
|
|
117
|
-
.reverse();
|
|
118
|
-
}
|
|
119
|
-
catch {
|
|
120
|
-
dreamFiles = [];
|
|
121
|
-
}
|
|
122
|
-
if (dreamFiles.length === 0) {
|
|
123
|
-
console.log(chalk.dim("No dreams yet. The dream cycle runs automatically via OpenClaw cron."));
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
console.log(chalk.magenta.bold(`\nDream Archive (${dreamFiles.length} dreams)\n`));
|
|
127
|
-
for (const f of dreamFiles.slice(0, 20)) {
|
|
128
|
-
const content = readFileSync(resolve(getDreamsDir(), f), "utf-8");
|
|
129
|
-
const firstLine = content.split("\n")[0].replace(/^#\s*/, "");
|
|
130
|
-
const stem = f.replace(/\.md$/, "").slice(0, 10);
|
|
131
|
-
console.log(` ${chalk.dim(stem)} ${firstLine}`);
|
|
132
|
-
}
|
|
133
|
-
});
|
|
134
|
-
parent
|
|
135
|
-
.command("nightmares")
|
|
136
|
-
.description("List saved nightmare journals")
|
|
137
|
-
.option("--dry-run", "Run without persisting state")
|
|
138
|
-
.action((opts) => {
|
|
139
|
-
if (opts.dryRun) {
|
|
140
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] Listing nightmares (no state will be saved)...\n"));
|
|
141
|
-
}
|
|
142
|
-
let nightmareFiles;
|
|
143
|
-
try {
|
|
144
|
-
nightmareFiles = readdirSync(getNightmaresDir())
|
|
145
|
-
.filter((f) => f.endsWith(".md"))
|
|
146
|
-
.sort()
|
|
147
|
-
.reverse();
|
|
148
|
-
}
|
|
149
|
-
catch {
|
|
150
|
-
nightmareFiles = [];
|
|
151
|
-
}
|
|
152
|
-
if (nightmareFiles.length === 0) {
|
|
153
|
-
console.log(chalk.dim("No nightmares yet. A nightmare has a 5% chance of occurring during the dream cycle."));
|
|
154
|
-
return;
|
|
155
|
-
}
|
|
156
|
-
console.log(chalk.red.bold(`\nNightmare Archive (${nightmareFiles.length} nightmares)\n`));
|
|
157
|
-
for (const f of nightmareFiles.slice(0, 20)) {
|
|
158
|
-
const content = readFileSync(resolve(getNightmaresDir(), f), "utf-8");
|
|
159
|
-
const firstLine = content.split("\n")[0].replace(/^#\s*/, "");
|
|
160
|
-
const stem = f.replace(/\.md$/, "").slice(0, 10);
|
|
161
|
-
console.log(` ${chalk.dim(stem)} ${firstLine}`);
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
// --- Shared helper: creates a direct Anthropic LLM client for CLI commands ---
|
|
165
|
-
async function createDirectClient() {
|
|
166
|
-
const { withBudget } = await import("./budget.js");
|
|
167
|
-
const { AGENT_MODEL } = await import("./config.js");
|
|
168
|
-
let apiKey;
|
|
169
|
-
try {
|
|
170
|
-
const { readFileSync: readFs } = await import("fs");
|
|
171
|
-
const { join: joinPath } = await import("path");
|
|
172
|
-
const { homedir } = await import("os");
|
|
173
|
-
const candidates = [
|
|
174
|
-
joinPath(homedir(), ".openclaw", "agents", "main", "agent", "auth-profiles.json"),
|
|
175
|
-
joinPath(homedir(), ".openclaw", "agents", "default", "auth-profiles.json"),
|
|
176
|
-
joinPath(homedir(), ".openclaw", "auth-profiles.json"),
|
|
177
|
-
];
|
|
178
|
-
for (const p of candidates) {
|
|
179
|
-
try {
|
|
180
|
-
const raw = JSON.parse(readFs(p, "utf-8"));
|
|
181
|
-
const profiles = raw.profiles || {};
|
|
182
|
-
for (const profile of Object.values(profiles)) {
|
|
183
|
-
if (profile.provider === "anthropic") {
|
|
184
|
-
apiKey =
|
|
185
|
-
String(profile.key || profile.token || profile.apiKey || "") || undefined;
|
|
186
|
-
if (apiKey)
|
|
187
|
-
break;
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
if (apiKey)
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
catch {
|
|
194
|
-
/* try next */
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
/* ignore */
|
|
200
|
-
}
|
|
201
|
-
if (!apiKey)
|
|
202
|
-
apiKey = process.env.ANTHROPIC_API_KEY;
|
|
203
|
-
if (!apiKey) {
|
|
204
|
-
console.error(chalk.red("No Anthropic API key found. Set ANTHROPIC_API_KEY or configure via openclaw."));
|
|
205
|
-
process.exit(1);
|
|
206
|
-
}
|
|
207
|
-
const client = withBudget({
|
|
208
|
-
async createMessage(params) {
|
|
209
|
-
const resp = await fetch("https://api.anthropic.com/v1/messages", {
|
|
210
|
-
method: "POST",
|
|
211
|
-
headers: {
|
|
212
|
-
"Content-Type": "application/json",
|
|
213
|
-
"x-api-key": apiKey,
|
|
214
|
-
"anthropic-version": "2023-06-01",
|
|
215
|
-
},
|
|
216
|
-
body: JSON.stringify({
|
|
217
|
-
model: params.model || AGENT_MODEL,
|
|
218
|
-
max_tokens: params.maxTokens,
|
|
219
|
-
system: params.system,
|
|
220
|
-
messages: params.messages,
|
|
221
|
-
}),
|
|
222
|
-
});
|
|
223
|
-
if (!resp.ok) {
|
|
224
|
-
const body = await resp.text();
|
|
225
|
-
throw new Error(`Anthropic API error ${resp.status}: ${body}`);
|
|
226
|
-
}
|
|
227
|
-
const data = (await resp.json());
|
|
228
|
-
const contentArr = data.content;
|
|
229
|
-
const text = contentArr?.[0]?.text ?? contentArr?.map((c) => c.text).join("") ?? "";
|
|
230
|
-
return {
|
|
231
|
-
text,
|
|
232
|
-
usage: data.usage
|
|
233
|
-
? {
|
|
234
|
-
input_tokens: data.usage.input_tokens ?? 0,
|
|
235
|
-
output_tokens: data.usage.output_tokens ?? 0,
|
|
236
|
-
}
|
|
237
|
-
: undefined,
|
|
238
|
-
};
|
|
239
|
-
},
|
|
240
|
-
});
|
|
241
|
-
const minimalApi = {
|
|
242
|
-
registerTool: () => { },
|
|
243
|
-
registerCli: () => { },
|
|
244
|
-
registerHook: () => { },
|
|
245
|
-
registerService: () => { },
|
|
246
|
-
registerGatewayMethod: () => { },
|
|
247
|
-
runtime: { subagent: {} },
|
|
248
|
-
memory: undefined,
|
|
249
|
-
logger: {
|
|
250
|
-
info: (msg) => console.log(chalk.dim(msg)),
|
|
251
|
-
warn: (msg) => console.log(chalk.yellow(msg)),
|
|
252
|
-
error: (msg) => console.error(chalk.red(msg)),
|
|
253
|
-
},
|
|
254
|
-
};
|
|
255
|
-
return { client, api: minimalApi };
|
|
256
|
-
}
|
|
257
|
-
parent
|
|
258
|
-
.command("reflect")
|
|
259
|
-
.description("Manually trigger the reflection and synthesis cycle")
|
|
260
|
-
.option("--dry-run", "Print synthesis output without storing to memory")
|
|
261
|
-
.option("--mode <mode>", "Reflection mode: synthesis (default) or seeding (pre-dream midnight pass)", "synthesis")
|
|
262
|
-
.action(async (opts) => {
|
|
263
|
-
const dryRun = opts.dryRun ?? false;
|
|
264
|
-
const mode = (opts.mode ?? "synthesis");
|
|
265
|
-
if (dryRun) {
|
|
266
|
-
console.log(chalk.yellow.bold(`\n[DRY RUN] Triggering reflection cycle (mode: ${mode}, no state will be saved)...\n`));
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
console.log(chalk.cyan.bold(`\nTriggering reflection cycle (mode: ${mode})...\n`));
|
|
270
|
-
}
|
|
271
|
-
const { runReflectionCycle } = await import("./waking.js");
|
|
272
|
-
const { client, api } = await createDirectClient();
|
|
273
|
-
try {
|
|
274
|
-
await runReflectionCycle(client, api, { dryRun, mode });
|
|
275
|
-
console.log(chalk.green.bold("\nReflection cycle complete.\n"));
|
|
276
|
-
}
|
|
277
|
-
catch (err) {
|
|
278
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
279
|
-
console.error(chalk.red(`\nReflection failed: ${msg}\n`));
|
|
280
|
-
process.exit(1);
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
parent
|
|
284
|
-
.command("dream")
|
|
285
|
-
.description("Manually trigger the dream cycle: consolidate memories into a dream narrative")
|
|
286
|
-
.option("--sim-remembered", "Force simulation of a remembered dream path")
|
|
287
|
-
.option("--sim-remembered-nightmare", "Force simulation of a remembered nightmare path")
|
|
288
|
-
.option("--dry-run", "Run without persisting state")
|
|
289
|
-
.action(async (opts) => {
|
|
290
|
-
const isSim = opts.simRemembered || opts.simRememberedNightmare;
|
|
291
|
-
const dryRun = isSim || opts.dryRun;
|
|
292
|
-
if (dryRun) {
|
|
293
|
-
if (isSim) {
|
|
294
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] Simulating dream remembrance path (no state will be saved)...\n"));
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] Triggering dream cycle (no state will be saved)...\n"));
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
console.log(chalk.magenta.bold("\nTriggering dream cycle...\n"));
|
|
302
|
-
}
|
|
303
|
-
const { runDreamCycle } = await import("./dreamer.js");
|
|
304
|
-
const { client } = await createDirectClient();
|
|
305
|
-
try {
|
|
306
|
-
const simOptions = {
|
|
307
|
-
forceRemembrance: isSim,
|
|
308
|
-
forceNightmare: opts.simRememberedNightmare,
|
|
309
|
-
dryRun,
|
|
310
|
-
};
|
|
311
|
-
const dream = await runDreamCycle(client, undefined, simOptions);
|
|
312
|
-
if (dream) {
|
|
313
|
-
if (simOptions.dryRun) {
|
|
314
|
-
console.log(chalk.cyan.bold("\n--- Simulation Output ---\n"));
|
|
315
|
-
console.log(dream.markdown);
|
|
316
|
-
console.log(chalk.cyan.bold("\n--- End Simulation ---\n"));
|
|
317
|
-
}
|
|
318
|
-
else {
|
|
319
|
-
console.log(chalk.green.bold("\nDream cycle complete.\n"));
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
else {
|
|
323
|
-
console.log(chalk.yellow("\nNo undreamed memories. Dreamless night.\n"));
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
catch (err) {
|
|
327
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
328
|
-
console.error(chalk.red(`\nDream cycle failed: ${msg}\n`));
|
|
329
|
-
process.exit(1);
|
|
330
|
-
}
|
|
331
|
-
});
|
|
332
|
-
parent
|
|
333
|
-
.command("nightmare")
|
|
334
|
-
.description("Manually trigger a nightmare cycle")
|
|
335
|
-
.option("--dry-run", "Run without persisting state")
|
|
336
|
-
.action(async (opts) => {
|
|
337
|
-
if (opts.dryRun) {
|
|
338
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] Triggering nightmare cycle (no state will be saved)...\n"));
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
console.log(chalk.red.bold("\nTriggering nightmare cycle...\n"));
|
|
342
|
-
}
|
|
343
|
-
const { runNightmareCycle } = await import("./nightmare.js");
|
|
344
|
-
const { client } = await createDirectClient();
|
|
345
|
-
try {
|
|
346
|
-
const nightmare = await runNightmareCycle(client, undefined, {
|
|
347
|
-
dryRun: opts.dryRun,
|
|
348
|
-
});
|
|
349
|
-
if (nightmare) {
|
|
350
|
-
if (opts.dryRun) {
|
|
351
|
-
console.log(chalk.cyan.bold("\n--- Simulation Output ---\n"));
|
|
352
|
-
console.log(nightmare.markdown);
|
|
353
|
-
console.log(chalk.cyan.bold("\n--- End Simulation ---\n"));
|
|
354
|
-
}
|
|
355
|
-
else {
|
|
356
|
-
console.log(chalk.green.bold("\nNightmare cycle complete.\n"));
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
else {
|
|
360
|
-
console.log(chalk.yellow("\nNo undreamed memories. Sleepless night.\n"));
|
|
361
|
-
}
|
|
362
|
-
}
|
|
363
|
-
catch (err) {
|
|
364
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
365
|
-
console.error(chalk.red(`\nNightmare cycle failed: ${msg}\n`));
|
|
366
|
-
process.exit(1);
|
|
367
|
-
}
|
|
368
|
-
});
|
|
369
|
-
parent
|
|
370
|
-
.command("post")
|
|
371
|
-
.description("Manually trigger a Moltbook post from the latest dream (requires moltbookEnabled)")
|
|
372
|
-
.option("-d, --dry-run", "Show what would be posted without calling Moltbook API")
|
|
373
|
-
.action(async (opts) => {
|
|
374
|
-
const { postDreamJournal, loadLatestDream, deriveSlug } = await import("./dreamer.js");
|
|
375
|
-
const { reflectOnDreamJournal } = await import("./reflection.js");
|
|
376
|
-
const { applyFilter } = await import("./filter.js");
|
|
377
|
-
const { getDreamSubmolt } = await import("./config.js");
|
|
378
|
-
const { client } = await createDirectClient();
|
|
379
|
-
if (opts.dryRun) {
|
|
380
|
-
console.log(chalk.yellow.bold("\n[DRY RUN] --- Moltbook Post ---\n"));
|
|
381
|
-
const dream = loadLatestDream();
|
|
382
|
-
if (!dream) {
|
|
383
|
-
console.log(chalk.red("No dreams found to post."));
|
|
384
|
-
return;
|
|
385
|
-
}
|
|
386
|
-
const reflection = await reflectOnDreamJournal(client, dream, "None yet ā explore freely.");
|
|
387
|
-
const postContent = reflection?.synthesis ?? dream.markdown;
|
|
388
|
-
const slug = deriveSlug(dream.markdown);
|
|
389
|
-
const postTitle = reflection
|
|
390
|
-
? `Morning Reflection: ${slug}`
|
|
391
|
-
: `Dream Journal: ${slug}`;
|
|
392
|
-
const filteredContent = await applyFilter(client, postContent, "post");
|
|
393
|
-
if (filteredContent === null) {
|
|
394
|
-
console.log(chalk.red("Post would be BLOCKED by filter."));
|
|
395
|
-
return;
|
|
396
|
-
}
|
|
397
|
-
const submolt = getDreamSubmolt();
|
|
398
|
-
console.log(`${chalk.bold("Submolt:")} m/${submolt}`);
|
|
399
|
-
console.log(`${chalk.bold("Title:")} ${postTitle}`);
|
|
400
|
-
console.log(`${chalk.bold("Content Preview:")}`);
|
|
401
|
-
console.log(chalk.dim(filteredContent.slice(0, 500) + "..."));
|
|
402
|
-
console.log(chalk.yellow.bold("\n--- END DRY RUN ---\n"));
|
|
403
|
-
return;
|
|
404
|
-
}
|
|
405
|
-
console.log(chalk.blue.bold("\nTriggering Moltbook post...\n"));
|
|
406
|
-
// Show what will be posted
|
|
407
|
-
const latestDream = loadLatestDream();
|
|
408
|
-
if (latestDream) {
|
|
409
|
-
const title = latestDream.markdown.split("\n")[0].replace(/^#\s*/, "") || "Untitled Dream";
|
|
410
|
-
const preview = latestDream.markdown
|
|
411
|
-
.split("\n")
|
|
412
|
-
.slice(1)
|
|
413
|
-
.join(" ")
|
|
414
|
-
.trim()
|
|
415
|
-
.slice(0, 200);
|
|
416
|
-
console.log(chalk.magenta(` Dream: ${title}`));
|
|
417
|
-
console.log(chalk.dim(` ${preview}...\n`));
|
|
418
|
-
}
|
|
419
|
-
try {
|
|
420
|
-
await postDreamJournal(client, undefined, { force: true });
|
|
421
|
-
console.log(chalk.green.bold("\nPost cycle complete.\n"));
|
|
422
|
-
}
|
|
423
|
-
catch (err) {
|
|
424
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
425
|
-
console.error(chalk.red(`\nPost cycle failed: ${msg}\n`));
|
|
426
|
-
process.exit(1);
|
|
427
|
-
}
|
|
428
|
-
});
|
|
429
|
-
parent
|
|
430
|
-
.command("lineage [filename]")
|
|
431
|
-
.description("Show dream lineage and thematic kinship")
|
|
432
|
-
.action(async (filename) => {
|
|
433
|
-
const { getAllDreamLineage, getDreamLineageByFilename } = await import("./memory.js");
|
|
434
|
-
if (filename) {
|
|
435
|
-
const row = getDreamLineageByFilename(filename);
|
|
436
|
-
if (!row) {
|
|
437
|
-
console.log(chalk.red(`No lineage found for: ${filename}`));
|
|
438
|
-
return;
|
|
439
|
-
}
|
|
440
|
-
const concepts = row.dominant_concepts
|
|
441
|
-
? JSON.parse(row.dominant_concepts)
|
|
442
|
-
: [];
|
|
443
|
-
const kin = row.thematic_kin ? JSON.parse(row.thematic_kin) : [];
|
|
444
|
-
const parents = row.parent_memory_ids
|
|
445
|
-
? JSON.parse(row.parent_memory_ids)
|
|
446
|
-
: [];
|
|
447
|
-
// Compute overlap for display
|
|
448
|
-
const { findThematicKin } = await import("./memory.js");
|
|
449
|
-
const kinWithOverlap = findThematicKin(concepts, filename, 0.3);
|
|
450
|
-
const overlapMap = new Map(kinWithOverlap.map((k) => [k.filename, k.overlap]));
|
|
451
|
-
console.log(chalk.cyan.bold(`\nDream: ${row.dream_filename}`));
|
|
452
|
-
console.log(`${chalk.bold("Date:")} ${row.created_at.slice(0, 10)}`);
|
|
453
|
-
console.log(`${chalk.bold("Dominant concepts:")} ${concepts.join(", ") || "none"}`);
|
|
454
|
-
if (kin.length > 0) {
|
|
455
|
-
console.log(chalk.bold(`Thematic kin (${kin.length}):`));
|
|
456
|
-
for (const k of kin) {
|
|
457
|
-
const overlap = overlapMap.get(k);
|
|
458
|
-
const overlapStr = overlap !== undefined ? ` (overlap: ${overlap.toFixed(2)})` : "";
|
|
459
|
-
console.log(` - ${k}${overlapStr}`);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
else {
|
|
463
|
-
console.log(chalk.dim("No thematic kin"));
|
|
464
|
-
}
|
|
465
|
-
console.log(`${chalk.bold("Parent memories:")} ${parents.length} deep memory entries`);
|
|
466
|
-
}
|
|
467
|
-
else {
|
|
468
|
-
const rows = getAllDreamLineage();
|
|
469
|
-
if (rows.length === 0) {
|
|
470
|
-
console.log(chalk.dim("No dream lineage recorded yet."));
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
console.log(chalk.cyan.bold(`\nDream Lineage (${rows.length} dreams)\n`));
|
|
474
|
-
for (const row of rows) {
|
|
475
|
-
const kin = row.thematic_kin ? JSON.parse(row.thematic_kin) : [];
|
|
476
|
-
const concepts = row.dominant_concepts
|
|
477
|
-
? JSON.parse(row.dominant_concepts)
|
|
478
|
-
: [];
|
|
479
|
-
const date = row.created_at.slice(0, 10);
|
|
480
|
-
console.log(` ${chalk.dim(date)} ${row.dream_filename} ${chalk.cyan(`kin:${kin.length}`)} ${chalk.magenta(`concepts:${concepts.length}`)}`);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
const rhythmAction = async (opts) => {
|
|
485
|
-
const { generateRhythmReport, formatReportNotification } = await import("./rhythm.js");
|
|
486
|
-
const days = opts.daily ? 1 : 7; // --weekly is the default
|
|
487
|
-
const report = generateRhythmReport(undefined, days);
|
|
488
|
-
if (opts.dryRun) {
|
|
489
|
-
console.log(JSON.stringify(report, null, 2));
|
|
490
|
-
return;
|
|
491
|
-
}
|
|
492
|
-
const message = formatReportNotification(report);
|
|
493
|
-
const label = days === 1 ? "Daily" : "Weekly";
|
|
494
|
-
console.log(chalk.cyan.bold(`\n${label} Cognitive Rhythm Report\n`));
|
|
495
|
-
console.log(message);
|
|
496
|
-
console.log(chalk.green.bold("\nReport complete.\n"));
|
|
497
|
-
};
|
|
498
|
-
parent
|
|
499
|
-
.command("rhythm")
|
|
500
|
-
.description("Show cognitive rhythm report ā dream, nightmare, and reflection activity")
|
|
501
|
-
.option("--weekly", "Show last 7 days (default)", true)
|
|
502
|
-
.option("--daily", "Show last 24 hours only")
|
|
503
|
-
.option("--dry-run", "Print raw JSON to stdout")
|
|
504
|
-
.action(rhythmAction);
|
|
505
|
-
// Hidden alias for backward compatibility
|
|
506
|
-
parent
|
|
507
|
-
.command("report", { hidden: true })
|
|
508
|
-
.option("--weekly", "Show last 7 days (default)", true)
|
|
509
|
-
.option("--daily", "Show last 24 hours only")
|
|
510
|
-
.option("--dry-run", "Print raw JSON to stdout")
|
|
511
|
-
.action(rhythmAction);
|
|
512
|
-
parent
|
|
513
|
-
.command("wake")
|
|
514
|
-
.description("Send a heartbeat wake to the OpenClaw gateway to deliver pending notifications")
|
|
515
|
-
.option("--text <text>", "Custom event text", "openclawdreams: manual wake requested")
|
|
516
|
-
.option("--dream", "Test dream notification delivery using the latest dream")
|
|
517
|
-
.action(async (opts) => {
|
|
518
|
-
const { execSync } = await import("node:child_process");
|
|
519
|
-
if (opts.dream) {
|
|
520
|
-
// Load latest dream and send a test notification through the full pipeline
|
|
521
|
-
const { loadLatestDream, deriveSlug } = await import("./dreamer.js");
|
|
522
|
-
const dream = loadLatestDream();
|
|
523
|
-
if (!dream) {
|
|
524
|
-
console.error(chalk.red("\nNo dreams found. Run a dream cycle first.\n"));
|
|
525
|
-
process.exit(1);
|
|
526
|
-
}
|
|
527
|
-
const slug = deriveSlug(dream.markdown);
|
|
528
|
-
console.log(chalk.cyan(`\nš Testing dream notification for: ${slug}\n`));
|
|
529
|
-
// Generate notification message via LLM
|
|
530
|
-
const { client } = await createDirectClient();
|
|
531
|
-
const { notifyOperatorOfDream } = await import("./notify.js");
|
|
532
|
-
const { loadState } = await import("./state.js");
|
|
533
|
-
const state = loadState();
|
|
534
|
-
const insight = state.waking_realization ?? null;
|
|
535
|
-
// Create minimal API that delegates to the CLI system event command
|
|
536
|
-
const testApi = {
|
|
537
|
-
registerTool: () => { },
|
|
538
|
-
registerCli: () => { },
|
|
539
|
-
registerHook: () => { },
|
|
540
|
-
registerService: () => { },
|
|
541
|
-
registerGatewayMethod: () => { },
|
|
542
|
-
runtime: {
|
|
543
|
-
config: { loadConfig: () => ({}) },
|
|
544
|
-
subagent: {},
|
|
545
|
-
system: {
|
|
546
|
-
enqueueSystemEvent: (text) => {
|
|
547
|
-
// Send directly via CLI since we're outside the gateway
|
|
548
|
-
execSync(`openclaw system event --text "${text.replace(/"/g, '\\"')}" --mode now`, { stdio: "inherit", timeout: 30_000 });
|
|
549
|
-
},
|
|
550
|
-
requestHeartbeatNow: () => {
|
|
551
|
-
// No-op ā the --mode now above already triggers a heartbeat
|
|
552
|
-
},
|
|
553
|
-
},
|
|
554
|
-
},
|
|
555
|
-
};
|
|
556
|
-
const sent = await notifyOperatorOfDream(client, testApi, dream, slug, insight);
|
|
557
|
-
if (sent) {
|
|
558
|
-
console.log(chalk.green.bold("\nā
Dream notification sent!\n"));
|
|
559
|
-
}
|
|
560
|
-
else {
|
|
561
|
-
console.error(chalk.red("\nā Notification not sent (check config).\n"));
|
|
562
|
-
process.exit(1);
|
|
563
|
-
}
|
|
564
|
-
return;
|
|
565
|
-
}
|
|
566
|
-
try {
|
|
567
|
-
execSync(`openclaw system event --text "${opts.text}" --mode now`, {
|
|
568
|
-
stdio: "inherit",
|
|
569
|
-
timeout: 30_000,
|
|
570
|
-
});
|
|
571
|
-
console.log(chalk.green.bold("\nHeartbeat wake sent.\n"));
|
|
572
|
-
}
|
|
573
|
-
catch (err) {
|
|
574
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
575
|
-
console.error(chalk.red(`\nFailed to send heartbeat wake: ${msg}\n`));
|
|
576
|
-
process.exit(1);
|
|
577
|
-
}
|
|
578
|
-
});
|
|
579
|
-
} // end registerCommands
|
|
580
|
-
// Standalone bin entry point
|
|
581
|
-
export const program = new Command();
|
|
582
|
-
program.name("openclawdreams").description("ElectricSheep ā an AI agent that dreams.");
|
|
583
|
-
registerCommands(program);
|
|
584
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/src/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|