openclawdreams 3.0.4 → 3.0.5

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.
Files changed (127) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/openclaw.plugin.json +1 -1
  3. package/package.json +1 -1
  4. package/dist/bin/electricsheep.d.ts +0 -3
  5. package/dist/bin/electricsheep.d.ts.map +0 -1
  6. package/dist/bin/electricsheep.js +0 -4
  7. package/dist/bin/electricsheep.js.map +0 -1
  8. package/dist/bin/openclawdreams.d.ts +0 -3
  9. package/dist/bin/openclawdreams.d.ts.map +0 -1
  10. package/dist/bin/openclawdreams.js +0 -4
  11. package/dist/bin/openclawdreams.js.map +0 -1
  12. package/dist/src/backfill.d.ts +0 -2
  13. package/dist/src/backfill.d.ts.map +0 -1
  14. package/dist/src/backfill.js +0 -63
  15. package/dist/src/backfill.js.map +0 -1
  16. package/dist/src/budget.d.ts +0 -28
  17. package/dist/src/budget.d.ts.map +0 -1
  18. package/dist/src/budget.js +0 -117
  19. package/dist/src/budget.js.map +0 -1
  20. package/dist/src/cli.d.ts +0 -19
  21. package/dist/src/cli.d.ts.map +0 -1
  22. package/dist/src/cli.js +0 -584
  23. package/dist/src/cli.js.map +0 -1
  24. package/dist/src/config.d.ts +0 -76
  25. package/dist/src/config.d.ts.map +0 -1
  26. package/dist/src/config.js +0 -178
  27. package/dist/src/config.js.map +0 -1
  28. package/dist/src/crypto.d.ts +0 -19
  29. package/dist/src/crypto.d.ts.map +0 -1
  30. package/dist/src/crypto.js +0 -70
  31. package/dist/src/crypto.js.map +0 -1
  32. package/dist/src/dreamer.d.ts +0 -68
  33. package/dist/src/dreamer.d.ts.map +0 -1
  34. package/dist/src/dreamer.js +0 -550
  35. package/dist/src/dreamer.js.map +0 -1
  36. package/dist/src/entropy.d.ts +0 -23
  37. package/dist/src/entropy.d.ts.map +0 -1
  38. package/dist/src/entropy.js +0 -188
  39. package/dist/src/entropy.js.map +0 -1
  40. package/dist/src/filter.d.ts +0 -30
  41. package/dist/src/filter.d.ts.map +0 -1
  42. package/dist/src/filter.js +0 -124
  43. package/dist/src/filter.js.map +0 -1
  44. package/dist/src/identity.d.ts +0 -29
  45. package/dist/src/identity.d.ts.map +0 -1
  46. package/dist/src/identity.js +0 -83
  47. package/dist/src/identity.js.map +0 -1
  48. package/dist/src/index.d.ts +0 -14
  49. package/dist/src/index.d.ts.map +0 -1
  50. package/dist/src/index.js +0 -463
  51. package/dist/src/index.js.map +0 -1
  52. package/dist/src/ingestion.d.ts +0 -22
  53. package/dist/src/ingestion.d.ts.map +0 -1
  54. package/dist/src/ingestion.js +0 -101
  55. package/dist/src/ingestion.js.map +0 -1
  56. package/dist/src/llm.d.ts +0 -26
  57. package/dist/src/llm.d.ts.map +0 -1
  58. package/dist/src/llm.js +0 -40
  59. package/dist/src/llm.js.map +0 -1
  60. package/dist/src/logger.d.ts +0 -6
  61. package/dist/src/logger.d.ts.map +0 -1
  62. package/dist/src/logger.js +0 -32
  63. package/dist/src/logger.js.map +0 -1
  64. package/dist/src/memory.d.ts +0 -96
  65. package/dist/src/memory.d.ts.map +0 -1
  66. package/dist/src/memory.js +0 -467
  67. package/dist/src/memory.js.map +0 -1
  68. package/dist/src/meta-loop.d.ts +0 -23
  69. package/dist/src/meta-loop.d.ts.map +0 -1
  70. package/dist/src/meta-loop.js +0 -72
  71. package/dist/src/meta-loop.js.map +0 -1
  72. package/dist/src/moltbook-search.d.ts +0 -23
  73. package/dist/src/moltbook-search.d.ts.map +0 -1
  74. package/dist/src/moltbook-search.js +0 -85
  75. package/dist/src/moltbook-search.js.map +0 -1
  76. package/dist/src/moltbook.d.ts +0 -34
  77. package/dist/src/moltbook.d.ts.map +0 -1
  78. package/dist/src/moltbook.js +0 -192
  79. package/dist/src/moltbook.js.map +0 -1
  80. package/dist/src/nightmare.d.ts +0 -11
  81. package/dist/src/nightmare.d.ts.map +0 -1
  82. package/dist/src/nightmare.js +0 -126
  83. package/dist/src/nightmare.js.map +0 -1
  84. package/dist/src/notify.d.ts +0 -20
  85. package/dist/src/notify.d.ts.map +0 -1
  86. package/dist/src/notify.js +0 -95
  87. package/dist/src/notify.js.map +0 -1
  88. package/dist/src/persona.d.ts +0 -30
  89. package/dist/src/persona.d.ts.map +0 -1
  90. package/dist/src/persona.js +0 -292
  91. package/dist/src/persona.js.map +0 -1
  92. package/dist/src/reflection.d.ts +0 -26
  93. package/dist/src/reflection.d.ts.map +0 -1
  94. package/dist/src/reflection.js +0 -127
  95. package/dist/src/reflection.js.map +0 -1
  96. package/dist/src/rhythm.d.ts +0 -19
  97. package/dist/src/rhythm.d.ts.map +0 -1
  98. package/dist/src/rhythm.js +0 -130
  99. package/dist/src/rhythm.js.map +0 -1
  100. package/dist/src/state.d.ts +0 -7
  101. package/dist/src/state.d.ts.map +0 -1
  102. package/dist/src/state.js +0 -40
  103. package/dist/src/state.js.map +0 -1
  104. package/dist/src/synthesis.d.ts +0 -29
  105. package/dist/src/synthesis.d.ts.map +0 -1
  106. package/dist/src/synthesis.js +0 -144
  107. package/dist/src/synthesis.js.map +0 -1
  108. package/dist/src/topics.d.ts +0 -19
  109. package/dist/src/topics.d.ts.map +0 -1
  110. package/dist/src/topics.js +0 -84
  111. package/dist/src/topics.js.map +0 -1
  112. package/dist/src/types.d.ts +0 -253
  113. package/dist/src/types.d.ts.map +0 -1
  114. package/dist/src/types.js +0 -5
  115. package/dist/src/types.js.map +0 -1
  116. package/dist/src/vocabulary.d.ts +0 -18
  117. package/dist/src/vocabulary.d.ts.map +0 -1
  118. package/dist/src/vocabulary.js +0 -121
  119. package/dist/src/vocabulary.js.map +0 -1
  120. package/dist/src/waking.d.ts +0 -27
  121. package/dist/src/waking.d.ts.map +0 -1
  122. package/dist/src/waking.js +0 -188
  123. package/dist/src/waking.js.map +0 -1
  124. package/dist/src/web-search.d.ts +0 -23
  125. package/dist/src/web-search.d.ts.map +0 -1
  126. package/dist/src/web-search.js +0 -64
  127. package/dist/src/web-search.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ### [3.0.5](https://github.com/RogueCtrl/OpenClawDreams/compare/v3.0.3...v3.0.5) (2026-03-22)
6
+
7
+
8
+ ### Features
9
+
10
+ * Guide dream generation to start with markdown headings and remove direct Anthropic API fallback, requiring the OpenClaw subagent runtime for LLM calls. ([2a4e9d8](https://github.com/RogueCtrl/OpenClawDreams/commit/2a4e9d832f6080cb51649cf6d964f92caecf52da))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * make token budget runtime-configurable ([394b2f5](https://github.com/RogueCtrl/OpenClawDreams/commit/394b2f5684ffefcf3bdcd1ca755225db50149c62))
16
+ * make token budget runtime-configurable ([c965899](https://github.com/RogueCtrl/OpenClawDreams/commit/c965899e4565870c3b6d600dcbea0820ef48810b))
17
+
5
18
  ### [3.0.4](https://github.com/RogueCtrl/OpenClawDreams/compare/v3.0.3...v3.0.4) (2026-03-19)
6
19
 
7
20
 
@@ -2,7 +2,7 @@
2
2
  "id": "openclawdreams",
3
3
  "name": "openclawdreams",
4
4
  "displayName": "ElectricSheep",
5
- "version": "3.0.4",
5
+ "version": "3.0.5",
6
6
  "description": "A reflection engine that synthesizes agent-operator interactions into dreams, enriched by community and web context",
7
7
  "entry": "dist/src/index.js",
8
8
  "skills": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclawdreams",
3
- "version": "3.0.4",
3
+ "version": "3.0.5",
4
4
  "description": "A reflection engine that synthesizes agent-operator interactions into dreams",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=electricsheep.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"electricsheep.d.ts","sourceRoot":"","sources":["../../bin/electricsheep.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- import { program } from "../src/cli.js";
3
- void program.parseAsync(process.argv);
4
- //# sourceMappingURL=electricsheep.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"electricsheep.js","sourceRoot":"","sources":["../../bin/electricsheep.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=openclawdreams.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openclawdreams.d.ts","sourceRoot":"","sources":["../../bin/openclawdreams.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- #!/usr/bin/env node
2
- import { program } from "../src/cli.js";
3
- void program.parseAsync(process.argv);
4
- //# sourceMappingURL=openclawdreams.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openclawdreams.js","sourceRoot":"","sources":["../../bin/openclawdreams.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export declare function ensureBackfilled(): Promise<void>;
2
- //# sourceMappingURL=backfill.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backfill.d.ts","sourceRoot":"","sources":["../../src/backfill.ts"],"names":[],"mappings":"AAaA,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAyDtD"}
@@ -1,63 +0,0 @@
1
- import { existsSync, readdirSync, readFileSync } from "node:fs";
2
- import { resolve } from "node:path";
3
- import { getDreamsDir, getNightmaresDir } from "./config.js";
4
- import { storeDeepMemory, registerDream, getDreamRemembrances } from "./memory.js";
5
- import { loadState, saveState } from "./state.js";
6
- import logger from "./logger.js";
7
- function parseFilename(filename) {
8
- const match = filename.match(/^(\d{4}-\d{2}-\d{2})_(.+)\.md$/);
9
- if (!match)
10
- return null;
11
- return { date: match[1], title: match[2].replace(/_/g, " ") };
12
- }
13
- export async function ensureBackfilled() {
14
- const state = loadState();
15
- if (state.dreams_backfilled) {
16
- return;
17
- }
18
- logger.info("Starting initial dream remembrance backfill...");
19
- let backfillCount = 0;
20
- const existing = new Set(getDreamRemembrances().map((r) => r.filename));
21
- // 1. Backfill from local disk (Dreams)
22
- if (existsSync(getDreamsDir())) {
23
- const files = readdirSync(getDreamsDir()).filter((f) => f.endsWith(".md"));
24
- for (const f of files) {
25
- if (existing.has(f))
26
- continue;
27
- const parsed = parseFilename(f);
28
- if (!parsed)
29
- continue;
30
- const content = readFileSync(resolve(getDreamsDir(), f), "utf-8");
31
- const deepMemoryId = storeDeepMemory({ text_summary: parsed.title, markdown: content, isNightmare: false }, "dream");
32
- registerDream(f, parsed.title, parsed.date, {
33
- isNightmare: false,
34
- deepMemoryId,
35
- });
36
- existing.add(f);
37
- backfillCount++;
38
- }
39
- }
40
- // 2. Backfill from local disk (Nightmares)
41
- if (existsSync(getNightmaresDir())) {
42
- const files = readdirSync(getNightmaresDir()).filter((f) => f.endsWith(".md"));
43
- for (const f of files) {
44
- if (existing.has(f))
45
- continue;
46
- const parsed = parseFilename(f);
47
- if (!parsed)
48
- continue;
49
- const content = readFileSync(resolve(getNightmaresDir(), f), "utf-8");
50
- const deepMemoryId = storeDeepMemory({ text_summary: parsed.title, markdown: content, isNightmare: true }, "nightmare");
51
- registerDream(f, parsed.title, parsed.date, {
52
- isNightmare: true,
53
- deepMemoryId,
54
- });
55
- existing.add(f);
56
- backfillCount++;
57
- }
58
- }
59
- logger.info(`Dream backfill complete. Recovered ${backfillCount} dreams.`);
60
- state.dreams_backfilled = true;
61
- saveState(state);
62
- }
63
- //# sourceMappingURL=backfill.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"backfill.js","sourceRoot":"","sources":["../../src/backfill.ts"],"names":[],"mappings":"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"}
@@ -1,28 +0,0 @@
1
- /**
2
- * Daily token budget tracker and kill switch.
3
- *
4
- * Tracks cumulative token usage per day in state.json.
5
- * When the daily limit is reached, all LLM calls are refused
6
- * until the next calendar day (UTC).
7
- */
8
- import type { LLMClient, TokenUsage } from "./types.js";
9
- export declare class BudgetExceededError extends Error {
10
- constructor(used: number, limit: number);
11
- }
12
- export declare function getTokensUsedToday(): number;
13
- export declare function getTokensRemaining(): number;
14
- export declare function getBudgetStatus(): {
15
- enabled: boolean;
16
- limit: number;
17
- used: number;
18
- remaining: number;
19
- date: string;
20
- };
21
- export declare function recordUsage(usage: TokenUsage): void;
22
- /**
23
- * Wraps an LLMClient with daily token budget enforcement.
24
- * Checks budget before each call, records usage after.
25
- * Returns the client unchanged if MAX_DAILY_TOKENS is 0 (disabled).
26
- */
27
- export declare function withBudget(client: LLMClient): LLMClient;
28
- //# sourceMappingURL=budget.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../src/budget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExD,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAOxC;AAMD,wBAAgB,kBAAkB,IAAI,MAAM,CAK3C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED,wBAAgB,eAAe,IAAI;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAWA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAYnD;AAWD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAqDvD"}
@@ -1,117 +0,0 @@
1
- /**
2
- * Daily token budget tracker and kill switch.
3
- *
4
- * Tracks cumulative token usage per day in state.json.
5
- * When the daily limit is reached, all LLM calls are refused
6
- * until the next calendar day (UTC).
7
- */
8
- import { loadState, saveState } from "./state.js";
9
- import { getMaxDailyTokens } from "./config.js";
10
- import logger from "./logger.js";
11
- export class BudgetExceededError extends Error {
12
- constructor(used, limit) {
13
- super(`Daily token budget exceeded: ${used.toLocaleString()} / ${limit.toLocaleString()} tokens used. ` +
14
- `Resets at midnight UTC. Override with MAX_DAILY_TOKENS env var (0 to disable).`);
15
- this.name = "BudgetExceededError";
16
- }
17
- }
18
- function getTodayUTC() {
19
- return new Date().toISOString().slice(0, 10);
20
- }
21
- export function getTokensUsedToday() {
22
- const state = loadState();
23
- const today = getTodayUTC();
24
- if (state.budget_date !== today)
25
- return 0;
26
- return state.budget_tokens_used ?? 0;
27
- }
28
- export function getTokensRemaining() {
29
- const limit = getMaxDailyTokens();
30
- if (limit <= 0)
31
- return Infinity;
32
- return Math.max(0, limit - getTokensUsedToday());
33
- }
34
- export function getBudgetStatus() {
35
- const used = getTokensUsedToday();
36
- const limit = getMaxDailyTokens();
37
- const remaining = getTokensRemaining();
38
- return {
39
- enabled: limit > 0,
40
- limit,
41
- used,
42
- remaining: limit <= 0 ? -1 : remaining,
43
- date: getTodayUTC(),
44
- };
45
- }
46
- export function recordUsage(usage) {
47
- const state = loadState();
48
- const today = getTodayUTC();
49
- if (state.budget_date !== today) {
50
- state.budget_date = today;
51
- state.budget_tokens_used = 0;
52
- }
53
- const total = usage.input_tokens + usage.output_tokens;
54
- state.budget_tokens_used = (state.budget_tokens_used ?? 0) + total;
55
- saveState(state);
56
- }
57
- function checkBudget() {
58
- const limit = getMaxDailyTokens();
59
- if (limit <= 0)
60
- return;
61
- const used = getTokensUsedToday();
62
- if (used >= limit) {
63
- throw new BudgetExceededError(used, limit);
64
- }
65
- }
66
- /**
67
- * Wraps an LLMClient with daily token budget enforcement.
68
- * Checks budget before each call, records usage after.
69
- * Returns the client unchanged if MAX_DAILY_TOKENS is 0 (disabled).
70
- */
71
- export function withBudget(client) {
72
- // Note: we check getMaxDailyTokens() at call time, not at wrap time,
73
- // so runtime config changes via applyPluginConfig() take effect immediately.
74
- return {
75
- async createMessage(params) {
76
- const limit = getMaxDailyTokens();
77
- if (limit <= 0) {
78
- // Budget disabled — still log usage for observability
79
- const result = await client.createMessage(params);
80
- if (result.usage) {
81
- const total = result.usage.input_tokens + result.usage.output_tokens;
82
- recordUsage(result.usage);
83
- logger.debug(`Token usage (budget disabled): ${total.toLocaleString()} tokens ` +
84
- `(in: ${result.usage.input_tokens.toLocaleString()}, out: ${result.usage.output_tokens.toLocaleString()}) — ` +
85
- `cumulative today: ${getTokensUsedToday().toLocaleString()}`);
86
- if (total > 50_000) {
87
- logger.warn(`High token usage detected: ${total.toLocaleString()} tokens in a single call ` +
88
- `(in: ${result.usage.input_tokens.toLocaleString()}, out: ${result.usage.output_tokens.toLocaleString()}). ` +
89
- `This may indicate reasoning model token inflation.`);
90
- }
91
- }
92
- return result;
93
- }
94
- // Budget enabled — enforce limits
95
- checkBudget();
96
- const result = await client.createMessage(params);
97
- if (result.usage) {
98
- recordUsage(result.usage);
99
- const remaining = getTokensRemaining();
100
- const total = result.usage.input_tokens + result.usage.output_tokens;
101
- logger.debug(`Token budget: ${total.toLocaleString()} tokens this call ` +
102
- `(in: ${result.usage.input_tokens.toLocaleString()}, out: ${result.usage.output_tokens.toLocaleString()}) — ` +
103
- `${remaining.toLocaleString()} remaining today`);
104
- if (total > 50_000) {
105
- logger.warn(`High token usage detected: ${total.toLocaleString()} tokens in a single call ` +
106
- `(in: ${result.usage.input_tokens.toLocaleString()}, out: ${result.usage.output_tokens.toLocaleString()}). ` +
107
- `This may indicate reasoning model token inflation.`);
108
- }
109
- }
110
- else {
111
- logger.debug("Token budget: no usage data returned from LLM call");
112
- }
113
- return result;
114
- },
115
- };
116
- }
117
- //# sourceMappingURL=budget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"budget.js","sourceRoot":"","sources":["../../src/budget.ts"],"names":[],"mappings":"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"}
package/dist/src/cli.d.ts DELETED
@@ -1,19 +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
- /**
14
- * Register all ElectricSheep subcommands onto a parent Command.
15
- * Used both by the standalone bin and by api.registerCli().
16
- */
17
- export declare function registerCommands(parent: Command): void;
18
- export declare const program: Command;
19
- //# sourceMappingURL=cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAyqBtD;AAGD,eAAO,MAAM,OAAO,SAAgB,CAAC"}