openclawdreams 3.0.3 → 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 +26 -0
  2. package/openclaw.plugin.json +6 -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 -87
  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 -74
  25. package/dist/src/config.d.ts.map +0 -1
  26. package/dist/src/config.js +0 -169
  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 -555
  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 -540
  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,32 @@
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
+
18
+ ### [3.0.4](https://github.com/RogueCtrl/OpenClawDreams/compare/v3.0.3...v3.0.4) (2026-03-19)
19
+
20
+
21
+ ### Features
22
+
23
+ * 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))
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * make token budget runtime-configurable ([394b2f5](https://github.com/RogueCtrl/OpenClawDreams/commit/394b2f5684ffefcf3bdcd1ca755225db50149c62))
29
+ * make token budget runtime-configurable ([c965899](https://github.com/RogueCtrl/OpenClawDreams/commit/c965899e4565870c3b6d600dcbea0820ef48810b))
30
+
5
31
  ### [3.0.3](https://github.com/RogueCtrl/OpenClawDreams/compare/v3.0.2...v3.0.3) (2026-03-17)
6
32
 
7
33
 
@@ -2,7 +2,7 @@
2
2
  "id": "openclawdreams",
3
3
  "name": "openclawdreams",
4
4
  "displayName": "ElectricSheep",
5
- "version": "3.0.3",
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": [
@@ -97,6 +97,11 @@
97
97
  "type": "boolean",
98
98
  "description": "Run reflection and dream cycles on the background schedule automatically. Set to false for CLI-only mode — cycles must be triggered manually via CLI commands.",
99
99
  "default": true
100
+ },
101
+ "maxDailyTokens": {
102
+ "type": "number",
103
+ "description": "Daily token budget limit. Set to 0 to disable the budget entirely (recommended for OAuth/flat-rate plans). Default 800000.",
104
+ "default": 800000
100
105
  }
101
106
  }
102
107
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openclawdreams",
3
- "version": "3.0.3",
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,CAG3C;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,CAUA;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAYnD;AAUD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAmBvD"}
@@ -1,87 +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 { MAX_DAILY_TOKENS } 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
- if (MAX_DAILY_TOKENS <= 0)
30
- return Infinity;
31
- return Math.max(0, MAX_DAILY_TOKENS - getTokensUsedToday());
32
- }
33
- export function getBudgetStatus() {
34
- const used = getTokensUsedToday();
35
- const remaining = getTokensRemaining();
36
- return {
37
- enabled: MAX_DAILY_TOKENS > 0,
38
- limit: MAX_DAILY_TOKENS,
39
- used,
40
- remaining: MAX_DAILY_TOKENS <= 0 ? -1 : remaining,
41
- date: getTodayUTC(),
42
- };
43
- }
44
- export function recordUsage(usage) {
45
- const state = loadState();
46
- const today = getTodayUTC();
47
- if (state.budget_date !== today) {
48
- state.budget_date = today;
49
- state.budget_tokens_used = 0;
50
- }
51
- const total = usage.input_tokens + usage.output_tokens;
52
- state.budget_tokens_used = (state.budget_tokens_used ?? 0) + total;
53
- saveState(state);
54
- }
55
- function checkBudget() {
56
- if (MAX_DAILY_TOKENS <= 0)
57
- return;
58
- const used = getTokensUsedToday();
59
- if (used >= MAX_DAILY_TOKENS) {
60
- throw new BudgetExceededError(used, MAX_DAILY_TOKENS);
61
- }
62
- }
63
- /**
64
- * Wraps an LLMClient with daily token budget enforcement.
65
- * Checks budget before each call, records usage after.
66
- * Returns the client unchanged if MAX_DAILY_TOKENS is 0 (disabled).
67
- */
68
- export function withBudget(client) {
69
- if (MAX_DAILY_TOKENS <= 0)
70
- return client;
71
- return {
72
- async createMessage(params) {
73
- checkBudget();
74
- const result = await client.createMessage(params);
75
- if (result.usage) {
76
- recordUsage(result.usage);
77
- const remaining = getTokensRemaining();
78
- logger.debug(`Token budget: used ${result.usage.input_tokens + result.usage.output_tokens} tokens this call, ${remaining.toLocaleString()} remaining today`);
79
- }
80
- else {
81
- logger.debug("Token budget: no usage data returned from LLM call");
82
- }
83
- return result;
84
- },
85
- };
86
- }
87
- //# 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"}