openclawdreams 0.7.0

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 (188) hide show
  1. package/.env.example +14 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
  3. package/.github/ISSUE_TEMPLATE/feature_request.md +19 -0
  4. package/.github/dependabot.yml +17 -0
  5. package/.github/pull_request_template.md +19 -0
  6. package/.github/workflows/build.yml +30 -0
  7. package/.github/workflows/release.yml +110 -0
  8. package/.prettierignore +4 -0
  9. package/.prettierrc +7 -0
  10. package/.versionrc.json +26 -0
  11. package/AGENTS.md +286 -0
  12. package/CHANGELOG.md +157 -0
  13. package/CODE_OF_CONDUCT.md +41 -0
  14. package/CONTRIBUTING.md +95 -0
  15. package/LICENSE +21 -0
  16. package/README.md +363 -0
  17. package/SECURITY.md +39 -0
  18. package/bin/electricsheep.ts +5 -0
  19. package/dist/bin/electricsheep.d.ts +3 -0
  20. package/dist/bin/electricsheep.d.ts.map +1 -0
  21. package/dist/bin/electricsheep.js +4 -0
  22. package/dist/bin/electricsheep.js.map +1 -0
  23. package/dist/src/budget.d.ts +28 -0
  24. package/dist/src/budget.d.ts.map +1 -0
  25. package/dist/src/budget.js +87 -0
  26. package/dist/src/budget.js.map +1 -0
  27. package/dist/src/cli.d.ts +19 -0
  28. package/dist/src/cli.d.ts.map +1 -0
  29. package/dist/src/cli.js +289 -0
  30. package/dist/src/cli.js.map +1 -0
  31. package/dist/src/config.d.ts +37 -0
  32. package/dist/src/config.d.ts.map +1 -0
  33. package/dist/src/config.js +70 -0
  34. package/dist/src/config.js.map +1 -0
  35. package/dist/src/crypto.d.ts +19 -0
  36. package/dist/src/crypto.d.ts.map +1 -0
  37. package/dist/src/crypto.js +70 -0
  38. package/dist/src/crypto.js.map +1 -0
  39. package/dist/src/dreamer.d.ts +13 -0
  40. package/dist/src/dreamer.d.ts.map +1 -0
  41. package/dist/src/dreamer.js +213 -0
  42. package/dist/src/dreamer.js.map +1 -0
  43. package/dist/src/filter.d.ts +30 -0
  44. package/dist/src/filter.d.ts.map +1 -0
  45. package/dist/src/filter.js +124 -0
  46. package/dist/src/filter.js.map +1 -0
  47. package/dist/src/identity.d.ts +29 -0
  48. package/dist/src/identity.d.ts.map +1 -0
  49. package/dist/src/identity.js +83 -0
  50. package/dist/src/identity.js.map +1 -0
  51. package/dist/src/index.d.ts +14 -0
  52. package/dist/src/index.d.ts.map +1 -0
  53. package/dist/src/index.js +293 -0
  54. package/dist/src/index.js.map +1 -0
  55. package/dist/src/llm.d.ts +26 -0
  56. package/dist/src/llm.d.ts.map +1 -0
  57. package/dist/src/llm.js +40 -0
  58. package/dist/src/llm.js.map +1 -0
  59. package/dist/src/logger.d.ts +6 -0
  60. package/dist/src/logger.d.ts.map +1 -0
  61. package/dist/src/logger.js +32 -0
  62. package/dist/src/logger.js.map +1 -0
  63. package/dist/src/memory.d.ts +41 -0
  64. package/dist/src/memory.d.ts.map +1 -0
  65. package/dist/src/memory.js +206 -0
  66. package/dist/src/memory.js.map +1 -0
  67. package/dist/src/moltbook-search.d.ts +23 -0
  68. package/dist/src/moltbook-search.d.ts.map +1 -0
  69. package/dist/src/moltbook-search.js +85 -0
  70. package/dist/src/moltbook-search.js.map +1 -0
  71. package/dist/src/moltbook.d.ts +34 -0
  72. package/dist/src/moltbook.d.ts.map +1 -0
  73. package/dist/src/moltbook.js +165 -0
  74. package/dist/src/moltbook.js.map +1 -0
  75. package/dist/src/notify.d.ts +18 -0
  76. package/dist/src/notify.d.ts.map +1 -0
  77. package/dist/src/notify.js +98 -0
  78. package/dist/src/notify.js.map +1 -0
  79. package/dist/src/persona.d.ts +26 -0
  80. package/dist/src/persona.d.ts.map +1 -0
  81. package/dist/src/persona.js +178 -0
  82. package/dist/src/persona.js.map +1 -0
  83. package/dist/src/reflection.d.ts +26 -0
  84. package/dist/src/reflection.d.ts.map +1 -0
  85. package/dist/src/reflection.js +111 -0
  86. package/dist/src/reflection.js.map +1 -0
  87. package/dist/src/state.d.ts +7 -0
  88. package/dist/src/state.d.ts.map +1 -0
  89. package/dist/src/state.js +40 -0
  90. package/dist/src/state.js.map +1 -0
  91. package/dist/src/synthesis.d.ts +29 -0
  92. package/dist/src/synthesis.d.ts.map +1 -0
  93. package/dist/src/synthesis.js +125 -0
  94. package/dist/src/synthesis.js.map +1 -0
  95. package/dist/src/topics.d.ts +19 -0
  96. package/dist/src/topics.d.ts.map +1 -0
  97. package/dist/src/topics.js +83 -0
  98. package/dist/src/topics.js.map +1 -0
  99. package/dist/src/types.d.ts +179 -0
  100. package/dist/src/types.d.ts.map +1 -0
  101. package/dist/src/types.js +5 -0
  102. package/dist/src/types.js.map +1 -0
  103. package/dist/src/waking.d.ts +24 -0
  104. package/dist/src/waking.d.ts.map +1 -0
  105. package/dist/src/waking.js +152 -0
  106. package/dist/src/waking.js.map +1 -0
  107. package/dist/src/web-search.d.ts +23 -0
  108. package/dist/src/web-search.d.ts.map +1 -0
  109. package/dist/src/web-search.js +64 -0
  110. package/dist/src/web-search.js.map +1 -0
  111. package/dist/test/budget.test.d.ts +2 -0
  112. package/dist/test/budget.test.d.ts.map +1 -0
  113. package/dist/test/budget.test.js +258 -0
  114. package/dist/test/budget.test.js.map +1 -0
  115. package/dist/test/crypto.test.d.ts +2 -0
  116. package/dist/test/crypto.test.d.ts.map +1 -0
  117. package/dist/test/crypto.test.js +93 -0
  118. package/dist/test/crypto.test.js.map +1 -0
  119. package/dist/test/dreamer.test.d.ts +2 -0
  120. package/dist/test/dreamer.test.d.ts.map +1 -0
  121. package/dist/test/dreamer.test.js +79 -0
  122. package/dist/test/dreamer.test.js.map +1 -0
  123. package/dist/test/filter.test.d.ts +2 -0
  124. package/dist/test/filter.test.d.ts.map +1 -0
  125. package/dist/test/filter.test.js +92 -0
  126. package/dist/test/filter.test.js.map +1 -0
  127. package/dist/test/memory.test.d.ts +2 -0
  128. package/dist/test/memory.test.d.ts.map +1 -0
  129. package/dist/test/memory.test.js +138 -0
  130. package/dist/test/memory.test.js.map +1 -0
  131. package/dist/test/moltbook.test.d.ts +2 -0
  132. package/dist/test/moltbook.test.d.ts.map +1 -0
  133. package/dist/test/moltbook.test.js +164 -0
  134. package/dist/test/moltbook.test.js.map +1 -0
  135. package/dist/test/persona.test.d.ts +2 -0
  136. package/dist/test/persona.test.d.ts.map +1 -0
  137. package/dist/test/persona.test.js +44 -0
  138. package/dist/test/persona.test.js.map +1 -0
  139. package/dist/test/reflection.test.d.ts +2 -0
  140. package/dist/test/reflection.test.d.ts.map +1 -0
  141. package/dist/test/reflection.test.js +57 -0
  142. package/dist/test/reflection.test.js.map +1 -0
  143. package/dist/test/state.test.d.ts +2 -0
  144. package/dist/test/state.test.d.ts.map +1 -0
  145. package/dist/test/state.test.js +50 -0
  146. package/dist/test/state.test.js.map +1 -0
  147. package/dist/test/waking.test.d.ts +2 -0
  148. package/dist/test/waking.test.d.ts.map +1 -0
  149. package/dist/test/waking.test.js +149 -0
  150. package/dist/test/waking.test.js.map +1 -0
  151. package/eslint.config.js +35 -0
  152. package/openclaw.plugin.json +62 -0
  153. package/package.json +72 -0
  154. package/skills/electricsheep.skill.md +69 -0
  155. package/skills/setup-guide/SKILL.md +303 -0
  156. package/src/budget.ts +104 -0
  157. package/src/cli.ts +325 -0
  158. package/src/config.ts +95 -0
  159. package/src/crypto.ts +82 -0
  160. package/src/dreamer.ts +283 -0
  161. package/src/filter.ts +146 -0
  162. package/src/identity.ts +92 -0
  163. package/src/index.ts +356 -0
  164. package/src/llm.ts +61 -0
  165. package/src/logger.ts +46 -0
  166. package/src/memory.ts +276 -0
  167. package/src/moltbook-search.ts +116 -0
  168. package/src/moltbook.ts +235 -0
  169. package/src/notify.ts +124 -0
  170. package/src/persona.ts +191 -0
  171. package/src/reflection.ts +150 -0
  172. package/src/state.ts +44 -0
  173. package/src/synthesis.ts +153 -0
  174. package/src/topics.ts +103 -0
  175. package/src/types.ts +196 -0
  176. package/src/waking.ts +199 -0
  177. package/src/web-search.ts +88 -0
  178. package/test/budget.test.ts +316 -0
  179. package/test/crypto.test.ts +112 -0
  180. package/test/dreamer.test.ts +95 -0
  181. package/test/filter.test.ts +115 -0
  182. package/test/memory.test.ts +182 -0
  183. package/test/moltbook.test.ts +209 -0
  184. package/test/persona.test.ts +59 -0
  185. package/test/reflection.test.ts +71 -0
  186. package/test/state.test.ts +57 -0
  187. package/test/waking.test.ts +214 -0
  188. package/tsconfig.json +20 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,157 @@
1
+ # Changelog
2
+
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
+
5
+ ## [0.7.0](https://github.com/RogueCtrl/OpenClawDreams/compare/v0.6.0...v0.7.0) (2026-03-06)
6
+
7
+
8
+ ### Features
9
+
10
+ * **cli:** add dream command and extract shared createDirectClient helper ([6032258](https://github.com/RogueCtrl/OpenClawDreams/commit/603225887ff382fa86c6e4b072de9585710bc1c6))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **cli:** use direct Anthropic API for reflect command instead of nonexistent tools call ([016bc48](https://github.com/RogueCtrl/OpenClawDreams/commit/016bc48bfa70f7ffb25565f5988a49c667ebec0a))
16
+ * **lint:** replace all any types with proper typed alternatives ([3698cc4](https://github.com/RogueCtrl/OpenClawDreams/commit/3698cc4b4a37594b7efdc6e4dc3f01c1cb8cade1))
17
+ * **openclaw:** upgrade plugin to use subagent runtime for reflection ([027679d](https://github.com/RogueCtrl/OpenClawDreams/commit/027679d3566d3a2d5ff410acc7c4e6459c204fd2))
18
+
19
+ ## [0.6.0](https://github.com/RogueCtrl/OpenClawDreams/compare/v0.5.0...v0.6.0) (2026-03-06)
20
+
21
+
22
+ ### Features
23
+
24
+ * **cli:** add reflect command to manually trigger reflection/synthesis ([a021650](https://github.com/RogueCtrl/OpenClawDreams/commit/a02165022bb0313683893fe2e0ff0c7d426db993))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **agent_end:** manually synthesize summary and track LLM usage ([76c85cb](https://github.com/RogueCtrl/OpenClawDreams/commit/76c85cb068edd4420169557103091bf8634e36b8))
30
+ * correct agent_end hook registration signature to match OpenClaw API ([d323b5a](https://github.com/RogueCtrl/OpenClawDreams/commit/d323b5a12356010806f32a917adb59ce8f39f4a6))
31
+ * correct registerHook signature to (event, {name, handler}) ([2f67c71](https://github.com/RogueCtrl/OpenClawDreams/commit/2f67c7152178c1977c83d65f8ed719ac177e0acf))
32
+ * use correct OpenClaw API registerHook(events, handler, opts) signature ([8493c4b](https://github.com/RogueCtrl/OpenClawDreams/commit/8493c4bca3d29c0ab7f17e666a3dd50d93fda89e))
33
+
34
+
35
+ ### Tests
36
+
37
+ * fix ENOTEMPTY failures in rmSync due to lingering Winston logger streams ([84f9152](https://github.com/RogueCtrl/OpenClawDreams/commit/84f9152441b8c4299b57475567c2767601e05145))
38
+ * remove temporary environment test files ([fbe76af](https://github.com/RogueCtrl/OpenClawDreams/commit/fbe76af8157f27e0afedb2ce13c841c67a477939))
39
+
40
+ ### [0.5.1](https://github.com/RogueCtrl/OpenClawDreams/compare/v0.5.0...v0.5.1) (2026-03-06)
41
+
42
+ ## [0.5.0](https://github.com/RogueCtrl/OpenClawDreams/compare/v0.4.0...v0.5.0) (2026-03-06)
43
+
44
+
45
+ ### Features
46
+
47
+ * Add plugin ID, refactor CLI commands to use parent, and apply minor formatting fixes. ([55ee458](https://github.com/RogueCtrl/OpenClawDreams/commit/55ee458d92cabe8f7f1b80bd0789d957ed9d64f9))
48
+ * Introduce plugin ID in package configuration and export plugin object from index.ts. ([5085020](https://github.com/RogueCtrl/OpenClawDreams/commit/5085020d87b5fb6f85bdbb3c43d67370cb7ce5a7))
49
+
50
+
51
+ ### Documentation
52
+
53
+ * clarify hot-reloading mechanism for plugin activation ([6cfda73](https://github.com/RogueCtrl/OpenClawDreams/commit/6cfda73540be85155a730c2734156350ca5b2742))
54
+ * clarify internal scheduler and daemon uptime dependency ([dc0e6a6](https://github.com/RogueCtrl/OpenClawDreams/commit/dc0e6a6a7a160575bd395b133b983e841de78358))
55
+ * remove references to cron in favor of internal node scheduler ([8496605](https://github.com/RogueCtrl/OpenClawDreams/commit/84966051c700d74256ebb05f7a4ba6d88261ecc2))
56
+
57
+ ## [0.4.0](https://github.com/RogueCtrl/ElectricSheep/compare/v0.3.1...v0.4.0) (2026-03-06)
58
+
59
+
60
+ ### Bug Fixes
61
+
62
+ * correct registerCli signature to use callback form ([c25fe36](https://github.com/RogueCtrl/ElectricSheep/commit/c25fe3635f76396b04c02a34575190863a1deaf4))
63
+ * **plugin:** specify openclaw.extensions exports ([6a3e545](https://github.com/RogueCtrl/ElectricSheep/commit/6a3e5454c4d102740dfaed38147a33229c3fd9b8))
64
+ * replace registerCron with registerService for OpenClaw API compatibility ([f3b50c7](https://github.com/RogueCtrl/ElectricSheep/commit/f3b50c75763a3ba9d593e42c44434e2f96fa591b))
65
+ * resolve @typescript-eslint/no-misused-promises in src/index.ts ([377a109](https://github.com/RogueCtrl/ElectricSheep/commit/377a109ec63266ea0a09562b7d00eaf3d9640858))
66
+
67
+
68
+ ### Documentation
69
+
70
+ * add agent instructions for linting and formatting before commits ([f261654](https://github.com/RogueCtrl/ElectricSheep/commit/f26165409fed5cbd65a6faf870208a015b1b4e91))
71
+ * rename project to OpenClawDreams in all documentation ([a260255](https://github.com/RogueCtrl/ElectricSheep/commit/a26025515fb22ef228e2c914175d75c6f149f7a8))
72
+
73
+ ### [0.3.1](https://github.com/RogueCtrl/ElectricSheep/compare/v0.3.0...v0.3.1) (2026-02-04)
74
+
75
+ ## 0.3.0 (2026-02-04)
76
+
77
+
78
+ ### Features
79
+
80
+ * Add comprehensive test suite for core components and introduce API cost warnings to documentation. ([98d3130](https://github.com/RogueCtrl/ElectricSheep/commit/98d3130784e903f14f5016d5e1246f9697124015))
81
+ * Add dream reflection pipeline, post filter, and documentation updates ([920d939](https://github.com/RogueCtrl/ElectricSheep/commit/920d9390314a56dd5e3ab3b908697096c36a3bc9))
82
+ * Add new `setup-guide` skill and register it in `openclaw.plugin.json`. ([485670c](https://github.com/RogueCtrl/ElectricSheep/commit/485670c04745a69ddbcbf6e51714eee4a5b059f2))
83
+ * add project governance, contribution guidelines, security policy, issue/PR templates, and CI build workflow. ([ddb3832](https://github.com/RogueCtrl/ElectricSheep/commit/ddb383238b9d29346c92b9f1e5316e9d222467f8))
84
+ * Implement dynamic agent identity loading from workspace files and update memory system documentation. ([c5a2c2b](https://github.com/RogueCtrl/ElectricSheep/commit/c5a2c2bf77cecc49f037b16828d53adc8d370d3c))
85
+ * Implement scheduled agent operations with `node-cron` and add retry logic to LLM API calls for increased robustness. ([12c6885](https://github.com/RogueCtrl/ElectricSheep/commit/12c6885b810ed6439faf6969d3f6cbcb2fca439f))
86
+ * Introduce a daily token budget for LLM calls, update the LLM client interface to include token usage, and upgrade Node.js to v24 with updated dependencies. ([fcf4f2c](https://github.com/RogueCtrl/ElectricSheep/commit/fcf4f2c19dc7730c2c777d7b394083832f43a500))
87
+
88
+
89
+ ### Bug Fixes
90
+
91
+ * Atomic state writes and SQLite connection singleton ([f5e1fe4](https://github.com/RogueCtrl/ElectricSheep/commit/f5e1fe439eda94e64f7707dcbf30a9cfcb36ea86))
92
+ * clean up stale tags before running standard-version in release workflow ([fd87548](https://github.com/RogueCtrl/ElectricSheep/commit/fd8754897515bc5508f7fdae31ac714a3459a6f6))
93
+ * Close logger before temp dir cleanup in state tests ([25478b3](https://github.com/RogueCtrl/ElectricSheep/commit/25478b3d2de4661ed4e7297fedcf45b0e400b169))
94
+ * Fail-closed filter, title filtering, and robust LLM output parsing ([b5c0b10](https://github.com/RogueCtrl/ElectricSheep/commit/b5c0b10334b866eaa8ca4bcebaa58ea11ef4a664))
95
+ * Mock file writes in state tests for CI reliability ([a6062ff](https://github.com/RogueCtrl/ElectricSheep/commit/a6062fffc335fcb1d078c135af61c4a8c9bb8585))
96
+ * use release PR instead of direct push to protected main branch ([a7b3c5d](https://github.com/RogueCtrl/ElectricSheep/commit/a7b3c5d5acd77aac09a7c108406d2b6412d63443))
97
+
98
+
99
+ ### Documentation
100
+
101
+ * Add uninstall section to setup guide skill ([e5b76d8](https://github.com/RogueCtrl/ElectricSheep/commit/e5b76d88ec9f15df1c7b1151d4c8a5cefa875c96))
102
+ * Clarify that ElectricSheep does not modify OpenClaw's memory ([9a060e1](https://github.com/RogueCtrl/ElectricSheep/commit/9a060e1bd0655e825f6aea7572d1ac108170fce1))
103
+ * clarify the daily token budget as best-effort and detail its limitations in both AGENTS.md and README.md. ([10eba97](https://github.com/RogueCtrl/ElectricSheep/commit/10eba97e87a334ca647b279d1fadc0b036a588b4))
104
+ * reframe README intro as a reflection engine with optional Moltbook ([a2e8543](https://github.com/RogueCtrl/ElectricSheep/commit/a2e8543375d9555261c67087b7c1b519a3090af8))
105
+ * Update CLAUDE.md for markdown blob pipeline and fail-closed filter ([c2f6865](https://github.com/RogueCtrl/ElectricSheep/commit/c2f68650e239fe205d14d59608bd286f8716f848))
106
+ * Update documentation to prioritize OpenClaw extension installation and usage, and refine standalone CLI instructions. ([d26dbfc](https://github.com/RogueCtrl/ElectricSheep/commit/d26dbfc6e23e02d4e542f38e090d005ef83ee8e8))
107
+
108
+
109
+ ### Refactoring
110
+
111
+ * Dream is a markdown blob, not a parsed structure ([52a86f0](https://github.com/RogueCtrl/ElectricSheep/commit/52a86f05054fc736d0be47fdbef9895f028fc15d))
112
+ * Filter produces post-ready content with default rules ([5ff898f](https://github.com/RogueCtrl/ElectricSheep/commit/5ff898f8dc2329b1c0abe1860d797b867a005e2f))
113
+ * Reimplement memory with encrypted SQLite, introduce LLM token budgeting, and update documentation and OpenClaw integration. ([b7887c3](https://github.com/RogueCtrl/ElectricSheep/commit/b7887c32ea6e80806bcd9a73031d8edfe137bbb5))
114
+ * Remove standalone mode, improve security, add tests for waking/moltbook ([#6](https://github.com/RogueCtrl/ElectricSheep/issues/6)) ([d191dca](https://github.com/RogueCtrl/ElectricSheep/commit/d191dca8a29f55ee2c8c9ba00a58e461eaa4dbca))
115
+ * rewrite ElectricSheep agent from Python to TypeScript and package as an OpenClaw plugin. ([c119a7a](https://github.com/RogueCtrl/ElectricSheep/commit/c119a7adfd995dcebb4c17a507e4b9e7da1c84e8))
116
+
117
+ ## 0.2.0 (2026-02-03)
118
+
119
+ ### Features
120
+
121
+ * **reflection-engine**: Pivot from Moltbook-centric to operator-focused architecture
122
+ * **synthesis**: New context synthesis combining operator conversations, web search, and optional Moltbook content
123
+ * **notifications**: Operator notification system via configured channels (telegram, discord, slack, etc.)
124
+ * **web-search**: Web search integration via OpenClaw API for broader context gathering
125
+ * **openclaw-memory**: Store dreams and reflections in OpenClaw's persistent memory
126
+ * **identity**: Dynamic agent identity loading from workspace SOUL.md/IDENTITY.md files
127
+ * **dream-reflection**: Dream reflection pipeline for decomposing themes and synthesizing insights
128
+ * **post-filter**: Content filter for outbound Moltbook posts (fail-closed design)
129
+ * **setup-guide**: New skill for guided plugin configuration
130
+
131
+ ### Refactoring
132
+
133
+ * **waking**: Reflection cycle now analyzes operator conversations instead of random Moltbook feed
134
+ * **dreamer**: Dreams stored in OpenClaw memory, Moltbook posting now optional
135
+ * **filter**: Filter produces post-ready content with configurable rules
136
+ * **dream-format**: Dream is now a markdown blob, not a parsed structure
137
+
138
+ ### Bug Fixes
139
+
140
+ * **filter**: Fail-closed filter behavior, title filtering, and robust LLM output parsing
141
+
142
+ ### Documentation
143
+
144
+ * Updated README.md and CLAUDE.md for new operator-focused architecture
145
+ * Added architecture diagrams showing daytime reflection and nighttime dream cycles
146
+ * Documented all configuration options and their defaults
147
+
148
+ ## 0.1.0 (2026-01-15)
149
+
150
+ Initial release with:
151
+
152
+ * Dual memory system (working memory + encrypted deep memory)
153
+ * Moltbook integration for community interaction
154
+ * Dream cycle with AES-256-GCM encryption
155
+ * OpenClaw plugin architecture (tools, hooks, cron jobs)
156
+ * Daily token budget tracking
157
+ * CLI utilities for status and memory inspection
@@ -0,0 +1,41 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
6
+
7
+ We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
8
+
9
+ ## Our Standards
10
+
11
+ Examples of behavior that contributes to a positive environment:
12
+
13
+ - Using welcoming and inclusive language
14
+ - Being respectful of differing viewpoints and experiences
15
+ - Gracefully accepting constructive criticism
16
+ - Focusing on what is best for the community
17
+ - Showing empathy towards other community members
18
+
19
+ Examples of unacceptable behavior:
20
+
21
+ - The use of sexualized language or imagery, and sexual attention or advances of any kind
22
+ - Trolling, insulting or derogatory comments, and personal or political attacks
23
+ - Public or private harassment
24
+ - Publishing others' private information without explicit permission
25
+ - Other conduct which could reasonably be considered inappropriate in a professional setting
26
+
27
+ ## Enforcement Responsibilities
28
+
29
+ Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.
30
+
31
+ ## Scope
32
+
33
+ This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces.
34
+
35
+ ## Enforcement
36
+
37
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project maintainers via GitHub issues or by contacting the repository owner directly. All complaints will be reviewed and investigated promptly and fairly.
38
+
39
+ ## Attribution
40
+
41
+ This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1, available at https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
@@ -0,0 +1,95 @@
1
+ # Contributing to ElectricSheep
2
+
3
+ Thanks for your interest in contributing. This document covers the basics.
4
+
5
+ ## Getting Started
6
+
7
+ ```bash
8
+ git clone https://github.com/RogueCtrl/ElectricSheep.git
9
+ cd ElectricSheep
10
+ npm install
11
+ npm run build
12
+ ```
13
+
14
+ You'll need Node.js >= 24.0.0 (Active LTS). To test the standalone CLI, install `@anthropic-ai/sdk` and create a `.env` from `.env.example`.
15
+
16
+ ## Development Workflow
17
+
18
+ 1. Fork the repo and create a branch from `main`.
19
+ 2. Make your changes in `src/`.
20
+ 3. Run `npm run build` to verify the project compiles cleanly.
21
+ 4. Run `npm test` to make sure all tests pass.
22
+ 5. Run `npm run lint` and `npm run format:check` to catch style issues.
23
+ 6. Open a pull request against `main`.
24
+
25
+ CI will run build, lint, format check, and tests on your PR. All must pass before merging.
26
+
27
+ ## Testing
28
+
29
+ Tests use Node's built-in test runner (`node:test`) with `tsx` for TypeScript:
30
+
31
+ ```bash
32
+ npm test # run all tests
33
+ node --import tsx --test test/crypto.test.ts # run a single file
34
+ ```
35
+
36
+ Each test file creates an isolated temp directory via `ELECTRICSHEEP_DATA_DIR` so tests never touch real data. When adding new functionality, add tests in `test/` following the existing patterns.
37
+
38
+ Good areas for more test coverage:
39
+ - Moltbook client (mock HTTP responses)
40
+ - Waking agent decision parsing
41
+ - CLI command output
42
+
43
+ ## Code Style
44
+
45
+ - **ESLint** and **Prettier** are configured. Run `npm run lint:fix` and `npm run format` to auto-fix.
46
+ - TypeScript strict mode is enabled.
47
+ - ESM modules (`import`/`export`, `.js` extensions in imports).
48
+ - Unused variables are errors (prefix with `_` if intentionally unused).
49
+
50
+ ## Project Structure
51
+
52
+ - `src/index.ts` — OpenClaw extension entry point
53
+ - `src/cli.ts` — Standalone CLI
54
+ - `src/scheduler.ts` — Long-lived process scheduler (node-cron)
55
+ - `src/memory.ts`, `src/crypto.ts` — Dual memory system
56
+ - `src/waking.ts`, `src/dreamer.ts` — Core agent logic
57
+ - `src/moltbook.ts` — Moltbook API client
58
+ - `src/persona.ts` — System prompts
59
+ - `openclaw.plugin.json` — Plugin manifest
60
+ - `test/` — Test suite
61
+
62
+ See `CLAUDE.md` for a full architecture overview.
63
+
64
+ ## What to Work On
65
+
66
+ Check the [issues](https://github.com/RogueCtrl/ElectricSheep/issues) for open tasks. Good first contributions:
67
+
68
+ - Expanding test coverage (Moltbook client, CLI, waking logic)
69
+ - Improving error handling in the Moltbook client
70
+ - New memory categories or dream narrative styles
71
+ - Documentation improvements
72
+
73
+ ## Commits
74
+
75
+ - Write clear commit messages that describe *why*, not just *what*.
76
+ - One logical change per commit.
77
+
78
+ ## Pull Requests
79
+
80
+ - Keep PRs focused — one feature or fix per PR.
81
+ - Include a description of what changed and why.
82
+ - All CI checks (build, lint, format, tests) must pass before merging.
83
+ - PRs require one approving review.
84
+
85
+ ## Reporting Bugs
86
+
87
+ Open an issue with:
88
+ - What you expected to happen
89
+ - What actually happened
90
+ - Steps to reproduce
91
+ - Node.js version and OS
92
+
93
+ ## Questions
94
+
95
+ Open a discussion or issue. There's no chat channel yet.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Matt Cox
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.