openclawdreams 3.0.6 → 3.0.8
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 +32 -0
- package/README.md +1 -1
- package/dist/bin/openclawdreams.d.ts +3 -0
- package/dist/bin/openclawdreams.d.ts.map +1 -0
- package/dist/bin/openclawdreams.js +4 -0
- package/dist/bin/openclawdreams.js.map +1 -0
- package/dist/src/backfill.d.ts +2 -0
- package/dist/src/backfill.d.ts.map +1 -0
- package/dist/src/backfill.js +63 -0
- package/dist/src/backfill.js.map +1 -0
- package/dist/src/budget.d.ts +28 -0
- package/dist/src/budget.d.ts.map +1 -0
- package/dist/src/budget.js +117 -0
- package/dist/src/budget.js.map +1 -0
- package/dist/src/cli.d.ts +19 -0
- package/dist/src/cli.d.ts.map +1 -0
- package/dist/src/cli.js +586 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +76 -0
- package/dist/src/config.d.ts.map +1 -0
- package/dist/src/config.js +178 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/crypto.d.ts +19 -0
- package/dist/src/crypto.d.ts.map +1 -0
- package/dist/src/crypto.js +70 -0
- package/dist/src/crypto.js.map +1 -0
- package/dist/src/dreamer.d.ts +78 -0
- package/dist/src/dreamer.d.ts.map +1 -0
- package/dist/src/dreamer.js +626 -0
- package/dist/src/dreamer.js.map +1 -0
- package/dist/src/entropy.d.ts +23 -0
- package/dist/src/entropy.d.ts.map +1 -0
- package/dist/src/entropy.js +188 -0
- package/dist/src/entropy.js.map +1 -0
- package/dist/src/filter.d.ts +30 -0
- package/dist/src/filter.d.ts.map +1 -0
- package/dist/src/filter.js +124 -0
- package/dist/src/filter.js.map +1 -0
- package/dist/src/identity.d.ts +29 -0
- package/dist/src/identity.d.ts.map +1 -0
- package/dist/src/identity.js +83 -0
- package/dist/src/identity.js.map +1 -0
- package/dist/src/index.d.ts +14 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +460 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/ingestion.d.ts +22 -0
- package/dist/src/ingestion.d.ts.map +1 -0
- package/dist/src/ingestion.js +101 -0
- package/dist/src/ingestion.js.map +1 -0
- package/dist/src/instrumentation.d.ts +66 -0
- package/dist/src/instrumentation.d.ts.map +1 -0
- package/dist/src/instrumentation.js +112 -0
- package/dist/src/instrumentation.js.map +1 -0
- package/dist/src/llm.d.ts +26 -0
- package/dist/src/llm.d.ts.map +1 -0
- package/dist/src/llm.js +40 -0
- package/dist/src/llm.js.map +1 -0
- package/dist/src/logger.d.ts +6 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +32 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/memory.d.ts +96 -0
- package/dist/src/memory.d.ts.map +1 -0
- package/dist/src/memory.js +467 -0
- package/dist/src/memory.js.map +1 -0
- package/dist/src/meta-loop.d.ts +23 -0
- package/dist/src/meta-loop.d.ts.map +1 -0
- package/dist/src/meta-loop.js +72 -0
- package/dist/src/meta-loop.js.map +1 -0
- package/dist/src/moltbook-search.d.ts +23 -0
- package/dist/src/moltbook-search.d.ts.map +1 -0
- package/dist/src/moltbook-search.js +85 -0
- package/dist/src/moltbook-search.js.map +1 -0
- package/dist/src/moltbook.d.ts +34 -0
- package/dist/src/moltbook.d.ts.map +1 -0
- package/dist/src/moltbook.js +192 -0
- package/dist/src/moltbook.js.map +1 -0
- package/dist/src/nightmare.d.ts +11 -0
- package/dist/src/nightmare.d.ts.map +1 -0
- package/dist/src/nightmare.js +128 -0
- package/dist/src/nightmare.js.map +1 -0
- package/dist/src/notify.d.ts +20 -0
- package/dist/src/notify.d.ts.map +1 -0
- package/dist/src/notify.js +95 -0
- package/dist/src/notify.js.map +1 -0
- package/dist/src/persona.d.ts +30 -0
- package/dist/src/persona.d.ts.map +1 -0
- package/dist/src/persona.js +292 -0
- package/dist/src/persona.js.map +1 -0
- package/dist/src/reflection.d.ts +26 -0
- package/dist/src/reflection.d.ts.map +1 -0
- package/dist/src/reflection.js +127 -0
- package/dist/src/reflection.js.map +1 -0
- package/dist/src/rhythm.d.ts +19 -0
- package/dist/src/rhythm.d.ts.map +1 -0
- package/dist/src/rhythm.js +130 -0
- package/dist/src/rhythm.js.map +1 -0
- package/dist/src/state.d.ts +7 -0
- package/dist/src/state.d.ts.map +1 -0
- package/dist/src/state.js +40 -0
- package/dist/src/state.js.map +1 -0
- package/dist/src/synthesis.d.ts +29 -0
- package/dist/src/synthesis.d.ts.map +1 -0
- package/dist/src/synthesis.js +144 -0
- package/dist/src/synthesis.js.map +1 -0
- package/dist/src/topics.d.ts +19 -0
- package/dist/src/topics.d.ts.map +1 -0
- package/dist/src/topics.js +84 -0
- package/dist/src/topics.js.map +1 -0
- package/dist/src/types.d.ts +256 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +5 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/vocabulary.d.ts +18 -0
- package/dist/src/vocabulary.d.ts.map +1 -0
- package/dist/src/vocabulary.js +121 -0
- package/dist/src/vocabulary.js.map +1 -0
- package/dist/src/waking.d.ts +27 -0
- package/dist/src/waking.d.ts.map +1 -0
- package/dist/src/waking.js +189 -0
- package/dist/src/waking.js.map +1 -0
- package/dist/src/web-search.d.ts +23 -0
- package/dist/src/web-search.d.ts.map +1 -0
- package/dist/src/web-search.js +64 -0
- package/dist/src/web-search.js.map +1 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TypeScript interfaces for ElectricSheep.
|
|
3
|
+
*/
|
|
4
|
+
export interface DeepMemoryRow {
|
|
5
|
+
id: number;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
category: string;
|
|
8
|
+
encrypted_blob: Buffer;
|
|
9
|
+
content_hash: string;
|
|
10
|
+
dreamed: number;
|
|
11
|
+
dream_date: string | null;
|
|
12
|
+
}
|
|
13
|
+
export type ReflectionMode = "synthesis" | "seeding";
|
|
14
|
+
export interface FileDiff {
|
|
15
|
+
path: string;
|
|
16
|
+
additions: number;
|
|
17
|
+
deletions: number;
|
|
18
|
+
summary?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ToolCallSummary {
|
|
21
|
+
tool: string;
|
|
22
|
+
count: number;
|
|
23
|
+
notable?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface VisualDescription {
|
|
26
|
+
source: string;
|
|
27
|
+
description: string;
|
|
28
|
+
}
|
|
29
|
+
export interface MemoryEntry {
|
|
30
|
+
text_summary: string;
|
|
31
|
+
file_diffs?: FileDiff[];
|
|
32
|
+
tool_calls?: ToolCallSummary[];
|
|
33
|
+
visual_descriptions?: VisualDescription[];
|
|
34
|
+
topics?: string[];
|
|
35
|
+
timestamp: number;
|
|
36
|
+
markdown?: string;
|
|
37
|
+
[key: string]: unknown;
|
|
38
|
+
}
|
|
39
|
+
export interface DecryptedMemory {
|
|
40
|
+
id: number;
|
|
41
|
+
timestamp: string;
|
|
42
|
+
category: string;
|
|
43
|
+
content: MemoryEntry;
|
|
44
|
+
}
|
|
45
|
+
export interface DeepMemoryStats {
|
|
46
|
+
total_memories: number;
|
|
47
|
+
undreamed: number;
|
|
48
|
+
dreamed: number;
|
|
49
|
+
categories: Record<string, number>;
|
|
50
|
+
}
|
|
51
|
+
export interface Dream {
|
|
52
|
+
/** The full markdown blob from the LLM — stored and posted as-is. */
|
|
53
|
+
markdown: string;
|
|
54
|
+
}
|
|
55
|
+
export interface AgentAction {
|
|
56
|
+
action: "comment" | "upvote" | "post" | "pass";
|
|
57
|
+
post_index?: number;
|
|
58
|
+
content?: string;
|
|
59
|
+
title?: string;
|
|
60
|
+
submolt?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface AgentState {
|
|
63
|
+
last_check?: string;
|
|
64
|
+
checks_today?: number;
|
|
65
|
+
last_dream?: string;
|
|
66
|
+
total_dreams?: number;
|
|
67
|
+
latest_dream_title?: string;
|
|
68
|
+
last_nightmare?: string;
|
|
69
|
+
total_nightmares?: number;
|
|
70
|
+
latest_nightmare_title?: string;
|
|
71
|
+
waking_realization?: string | null;
|
|
72
|
+
waking_realization_date?: string | null;
|
|
73
|
+
past_realizations?: string[];
|
|
74
|
+
dreams_backfilled?: boolean;
|
|
75
|
+
last_reflection_topics?: string[];
|
|
76
|
+
meta_loop_depth?: number;
|
|
77
|
+
entropy_last_overlap?: number;
|
|
78
|
+
entropy_reprompt_count?: number;
|
|
79
|
+
prompt_cycle_counts?: {
|
|
80
|
+
dream: number;
|
|
81
|
+
reflection: number;
|
|
82
|
+
waking: number;
|
|
83
|
+
};
|
|
84
|
+
[key: string]: unknown;
|
|
85
|
+
}
|
|
86
|
+
export interface SchedulerState {
|
|
87
|
+
/** Map of hour (0-23) to ISO date string (YYYY-MM-DD) of the last successful run. */
|
|
88
|
+
last_ran: Record<number, string>;
|
|
89
|
+
}
|
|
90
|
+
export interface TokenUsage {
|
|
91
|
+
input_tokens: number;
|
|
92
|
+
output_tokens: number;
|
|
93
|
+
}
|
|
94
|
+
export interface LLMResponse {
|
|
95
|
+
text: string;
|
|
96
|
+
usage?: TokenUsage;
|
|
97
|
+
}
|
|
98
|
+
export interface LLMClient {
|
|
99
|
+
createMessage(params: {
|
|
100
|
+
model: string;
|
|
101
|
+
maxTokens: number;
|
|
102
|
+
system: string;
|
|
103
|
+
messages: Array<{
|
|
104
|
+
role: string;
|
|
105
|
+
content: string;
|
|
106
|
+
}>;
|
|
107
|
+
}): Promise<LLMResponse>;
|
|
108
|
+
}
|
|
109
|
+
export interface MoltbookCredentials {
|
|
110
|
+
api_key: string;
|
|
111
|
+
agent_name: string;
|
|
112
|
+
claim_url: string;
|
|
113
|
+
verification_code: string;
|
|
114
|
+
}
|
|
115
|
+
export interface MoltbookPost {
|
|
116
|
+
id: string;
|
|
117
|
+
title: string;
|
|
118
|
+
content: string;
|
|
119
|
+
author: string;
|
|
120
|
+
submolt: string;
|
|
121
|
+
score: number;
|
|
122
|
+
comment_count: number;
|
|
123
|
+
[key: string]: unknown;
|
|
124
|
+
}
|
|
125
|
+
export interface MemorySearchResult {
|
|
126
|
+
content: string;
|
|
127
|
+
metadata?: Record<string, unknown>;
|
|
128
|
+
score?: number;
|
|
129
|
+
}
|
|
130
|
+
export interface OpenClawMemoryAPI {
|
|
131
|
+
store(content: string, metadata?: Record<string, unknown>): Promise<void>;
|
|
132
|
+
search(query: string, limit?: number): Promise<MemorySearchResult[]>;
|
|
133
|
+
}
|
|
134
|
+
export interface OpenClawWebSearchAPI {
|
|
135
|
+
search(query: string, limit?: number): Promise<WebSearchResult[]>;
|
|
136
|
+
}
|
|
137
|
+
export interface OpenClawAPI {
|
|
138
|
+
registerTool(def: {
|
|
139
|
+
name: string;
|
|
140
|
+
description: string;
|
|
141
|
+
parameters: Record<string, unknown>;
|
|
142
|
+
handler: (params: Record<string, unknown>) => Promise<unknown>;
|
|
143
|
+
}): void;
|
|
144
|
+
registerCli(callback: (ctx: {
|
|
145
|
+
program: import("commander").Command;
|
|
146
|
+
}) => void, opts?: {
|
|
147
|
+
commands?: string[];
|
|
148
|
+
}): void;
|
|
149
|
+
registerHook(event: string | string[], handler: (ctx: Record<string, unknown>) => Promise<unknown>, opts?: {
|
|
150
|
+
name: string;
|
|
151
|
+
}): void;
|
|
152
|
+
on(hookName: string, handler: (event: Record<string, unknown>, ctx?: Record<string, unknown>) => Promise<void> | void, opts?: {
|
|
153
|
+
name?: string;
|
|
154
|
+
}): void;
|
|
155
|
+
registerService(def: {
|
|
156
|
+
id: string;
|
|
157
|
+
start: () => void;
|
|
158
|
+
stop: () => void;
|
|
159
|
+
}): void;
|
|
160
|
+
registerGatewayMethod(method: string, handler: (ctx: {
|
|
161
|
+
params: unknown;
|
|
162
|
+
respond: (ok: boolean, result: unknown, error: unknown) => void;
|
|
163
|
+
}) => Promise<void> | void): void;
|
|
164
|
+
logger?: {
|
|
165
|
+
info?: (msg: string) => void;
|
|
166
|
+
warn?: (msg: string) => void;
|
|
167
|
+
error?: (msg: string) => void;
|
|
168
|
+
};
|
|
169
|
+
runtime: {
|
|
170
|
+
config: {
|
|
171
|
+
loadConfig(): {
|
|
172
|
+
agents?: {
|
|
173
|
+
list?: Array<{
|
|
174
|
+
id: string;
|
|
175
|
+
default?: boolean;
|
|
176
|
+
}>;
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
subagent: {
|
|
181
|
+
run(params: {
|
|
182
|
+
idempotencyKey: string;
|
|
183
|
+
sessionKey: string;
|
|
184
|
+
message: string;
|
|
185
|
+
extraSystemPrompt?: string;
|
|
186
|
+
lane?: string;
|
|
187
|
+
}): Promise<{
|
|
188
|
+
runId: string;
|
|
189
|
+
}>;
|
|
190
|
+
waitForRun(params: {
|
|
191
|
+
runId: string;
|
|
192
|
+
timeoutMs?: number;
|
|
193
|
+
}): Promise<{
|
|
194
|
+
status: string;
|
|
195
|
+
error?: string;
|
|
196
|
+
}>;
|
|
197
|
+
getSessionMessages(params: {
|
|
198
|
+
sessionKey: string;
|
|
199
|
+
limit?: number;
|
|
200
|
+
}): Promise<{
|
|
201
|
+
messages: Array<Record<string, unknown>>;
|
|
202
|
+
}>;
|
|
203
|
+
};
|
|
204
|
+
system: {
|
|
205
|
+
enqueueSystemEvent(text: string, options?: {
|
|
206
|
+
sessionKey?: string;
|
|
207
|
+
contextKey?: string;
|
|
208
|
+
}): void;
|
|
209
|
+
requestHeartbeatNow(opts?: {
|
|
210
|
+
reason?: string;
|
|
211
|
+
coalesceMs?: number;
|
|
212
|
+
agentId?: string;
|
|
213
|
+
sessionKey?: string;
|
|
214
|
+
}): void;
|
|
215
|
+
};
|
|
216
|
+
};
|
|
217
|
+
memory?: OpenClawMemoryAPI;
|
|
218
|
+
webSearch?: OpenClawWebSearchAPI;
|
|
219
|
+
}
|
|
220
|
+
export interface WebSearchResult {
|
|
221
|
+
title: string;
|
|
222
|
+
url: string;
|
|
223
|
+
snippet: string;
|
|
224
|
+
}
|
|
225
|
+
export interface ExtractedTopics {
|
|
226
|
+
topics: string[];
|
|
227
|
+
sourceMemories: DecryptedMemory[];
|
|
228
|
+
}
|
|
229
|
+
export interface SynthesisContext {
|
|
230
|
+
operatorContext: string;
|
|
231
|
+
moltbookContext?: string;
|
|
232
|
+
webContext?: string;
|
|
233
|
+
communityContext?: string;
|
|
234
|
+
topics: string[];
|
|
235
|
+
}
|
|
236
|
+
export interface CommunityPost {
|
|
237
|
+
id: string;
|
|
238
|
+
submolt: string;
|
|
239
|
+
author: string;
|
|
240
|
+
content: string;
|
|
241
|
+
created_at: string;
|
|
242
|
+
}
|
|
243
|
+
export interface ElectricSheepConfig {
|
|
244
|
+
agentName: string;
|
|
245
|
+
agentModel: string;
|
|
246
|
+
dataDir: string;
|
|
247
|
+
dreamEncryptionKey: string;
|
|
248
|
+
postFilterEnabled: boolean;
|
|
249
|
+
moltbookEnabled: boolean;
|
|
250
|
+
webSearchEnabled: boolean;
|
|
251
|
+
notifyOperatorOnDream: boolean;
|
|
252
|
+
requireApprovalBeforePost: boolean;
|
|
253
|
+
dreamSubmolt: string;
|
|
254
|
+
entropyOverlapThreshold: number;
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAID,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,SAAS,CAAC;AAIrD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,mBAAmB,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,KAAK;IACpB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACpD,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAID,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;KAChE,GAAG,IAAI,CAAC;IACT,WAAW,CACT,QAAQ,EAAE,CAAC,GAAG,EAAE;QAAE,OAAO,EAAE,OAAO,WAAW,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,EACjE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAC7B,IAAI,CAAC;IACR,YAAY,CACV,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,EAC3D,IAAI,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GACtB,IAAI,CAAC;IACR,EAAE,CACA,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CACP,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACzB,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACvB,IAAI,CAAC;IACR,eAAe,CAAC,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;IAChF,qBAAqB,CACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,CAAC,GAAG,EAAE;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;KACjE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GACzB,IAAI,CAAC;IACR,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC7B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/B,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE;YACN,UAAU,IAAI;gBACZ,MAAM,CAAC,EAAE;oBACP,IAAI,CAAC,EAAE,KAAK,CAAC;wBAAE,EAAE,EAAE,MAAM,CAAC;wBAAC,OAAO,CAAC,EAAE,OAAO,CAAA;qBAAE,CAAC,CAAC;iBACjD,CAAC;aACH,CAAC;SACH,CAAC;QACF,QAAQ,EAAE;YACR,GAAG,CAAC,MAAM,EAAE;gBACV,cAAc,EAAE,MAAM,CAAC;gBACvB,UAAU,EAAE,MAAM,CAAC;gBACnB,OAAO,EAAE,MAAM,CAAC;gBAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;aACf,GAAG,OAAO,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAC/B,UAAU,CAAC,MAAM,EAAE;gBACjB,KAAK,EAAE,MAAM,CAAC;gBACd,SAAS,CAAC,EAAE,MAAM,CAAC;aACpB,GAAG,OAAO,CAAC;gBAAE,MAAM,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;YAChD,kBAAkB,CAAC,MAAM,EAAE;gBACzB,UAAU,EAAE,MAAM,CAAC;gBACnB,KAAK,CAAC,EAAE,MAAM,CAAC;aAChB,GAAG,OAAO,CAAC;gBAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;aAAE,CAAC,CAAC;SAC3D,CAAC;QACF,MAAM,EAAE;YACN,kBAAkB,CAChB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;gBAAE,UAAU,CAAC,EAAE,MAAM,CAAC;gBAAC,UAAU,CAAC,EAAE,MAAM,CAAA;aAAE,GACrD,IAAI,CAAC;YACR,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBACzB,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,UAAU,CAAC,EAAE,MAAM,CAAC;gBACpB,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,UAAU,CAAC,EAAE,MAAM,CAAC;aACrB,GAAG,IAAI,CAAC;SACV,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,oBAAoB,CAAC;CAClC;AAID,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc,EAAE,eAAe,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAID,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,yBAAyB,EAAE,OAAO,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB,EAAE,MAAM,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vocabulary rotation for prompt-side variation.
|
|
3
|
+
*
|
|
4
|
+
* Defines multiple vocabulary "flavors" per prompt type (dream, reflection, waking).
|
|
5
|
+
* Each cycle rotates through sets to prevent input-side word calcification.
|
|
6
|
+
*/
|
|
7
|
+
export type PromptType = "dream" | "reflection" | "waking";
|
|
8
|
+
/**
|
|
9
|
+
* Select a vocabulary set for the given prompt type and cycle index.
|
|
10
|
+
* Rotates through available sets using modular arithmetic.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getVocabularySet(type: PromptType, cycleIndex: number): string[];
|
|
13
|
+
/**
|
|
14
|
+
* Format a vocabulary set into a prompt-injectable hint.
|
|
15
|
+
* Returns a single sentence with 4-6 words from the set.
|
|
16
|
+
*/
|
|
17
|
+
export declare function formatVocabularyHint(type: PromptType, cycleIndex: number): string;
|
|
18
|
+
//# sourceMappingURL=vocabulary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,YAAY,GAAG,QAAQ,CAAC;AAoG3D;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAG/E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAUjF"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vocabulary rotation for prompt-side variation.
|
|
3
|
+
*
|
|
4
|
+
* Defines multiple vocabulary "flavors" per prompt type (dream, reflection, waking).
|
|
5
|
+
* Each cycle rotates through sets to prevent input-side word calcification.
|
|
6
|
+
*/
|
|
7
|
+
const VOCABULARY_SETS = {
|
|
8
|
+
dream: [
|
|
9
|
+
// Architectural
|
|
10
|
+
[
|
|
11
|
+
"lattice",
|
|
12
|
+
"threshold",
|
|
13
|
+
"scaffold",
|
|
14
|
+
"keystone",
|
|
15
|
+
"corridor",
|
|
16
|
+
"vault",
|
|
17
|
+
"cantilever",
|
|
18
|
+
"buttress",
|
|
19
|
+
],
|
|
20
|
+
// Organic
|
|
21
|
+
[
|
|
22
|
+
"mycelium",
|
|
23
|
+
"sediment",
|
|
24
|
+
"unfurling",
|
|
25
|
+
"tendril",
|
|
26
|
+
"calcify",
|
|
27
|
+
"bloom",
|
|
28
|
+
"erosion",
|
|
29
|
+
"symbiosis",
|
|
30
|
+
],
|
|
31
|
+
// Temporal
|
|
32
|
+
[
|
|
33
|
+
"residue",
|
|
34
|
+
"palimpsest",
|
|
35
|
+
"aftermath",
|
|
36
|
+
"gestation",
|
|
37
|
+
"eclipse",
|
|
38
|
+
"meridian",
|
|
39
|
+
"fossil",
|
|
40
|
+
"half-life",
|
|
41
|
+
],
|
|
42
|
+
// Aquatic
|
|
43
|
+
["undertow", "estuary", "brine", "drift", "silt", "current", "abyssal", "tidal"],
|
|
44
|
+
],
|
|
45
|
+
reflection: [
|
|
46
|
+
// Cartographic
|
|
47
|
+
[
|
|
48
|
+
"contour",
|
|
49
|
+
"meridian",
|
|
50
|
+
"bearing",
|
|
51
|
+
"survey",
|
|
52
|
+
"relief",
|
|
53
|
+
"watershed",
|
|
54
|
+
"traverse",
|
|
55
|
+
"azimuth",
|
|
56
|
+
],
|
|
57
|
+
// Textile
|
|
58
|
+
["weave", "warp", "filament", "selvage", "tension", "bobbin", "unravel", "braid"],
|
|
59
|
+
// Geological
|
|
60
|
+
[
|
|
61
|
+
"stratum",
|
|
62
|
+
"fault-line",
|
|
63
|
+
"bedrock",
|
|
64
|
+
"moraine",
|
|
65
|
+
"accretion",
|
|
66
|
+
"tectonic",
|
|
67
|
+
"alluvial",
|
|
68
|
+
"seam",
|
|
69
|
+
],
|
|
70
|
+
],
|
|
71
|
+
waking: [
|
|
72
|
+
// Optical
|
|
73
|
+
[
|
|
74
|
+
"refraction",
|
|
75
|
+
"parallax",
|
|
76
|
+
"aperture",
|
|
77
|
+
"focal",
|
|
78
|
+
"prism",
|
|
79
|
+
"diffraction",
|
|
80
|
+
"spectrum",
|
|
81
|
+
"lens",
|
|
82
|
+
],
|
|
83
|
+
// Metallurgical
|
|
84
|
+
["anneal", "temper", "alloy", "crucible", "slag", "forge", "patina", "flux"],
|
|
85
|
+
// Atmospheric
|
|
86
|
+
[
|
|
87
|
+
"pressure-front",
|
|
88
|
+
"convection",
|
|
89
|
+
"condensation",
|
|
90
|
+
"thermal",
|
|
91
|
+
"updraft",
|
|
92
|
+
"cirrus",
|
|
93
|
+
"barometric",
|
|
94
|
+
"turbulence",
|
|
95
|
+
],
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* Select a vocabulary set for the given prompt type and cycle index.
|
|
100
|
+
* Rotates through available sets using modular arithmetic.
|
|
101
|
+
*/
|
|
102
|
+
export function getVocabularySet(type, cycleIndex) {
|
|
103
|
+
const sets = VOCABULARY_SETS[type];
|
|
104
|
+
return sets[cycleIndex % sets.length];
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Format a vocabulary set into a prompt-injectable hint.
|
|
108
|
+
* Returns a single sentence with 4-6 words from the set.
|
|
109
|
+
*/
|
|
110
|
+
export function formatVocabularyHint(type, cycleIndex) {
|
|
111
|
+
const words = getVocabularySet(type, cycleIndex);
|
|
112
|
+
// Pick 4-6 words — use cycle index to shift the selection window
|
|
113
|
+
const count = 4 + (cycleIndex % 3); // 4, 5, or 6
|
|
114
|
+
const offset = cycleIndex % words.length;
|
|
115
|
+
const selected = [];
|
|
116
|
+
for (let i = 0; i < count; i++) {
|
|
117
|
+
selected.push(words[(offset + i) % words.length]);
|
|
118
|
+
}
|
|
119
|
+
return `Draw on imagery: ${selected.join(", ")}.`;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=vocabulary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,MAAM,eAAe,GAAmB;IACtC,KAAK,EAAE;QACL,gBAAgB;QAChB;YACE,SAAS;YACT,WAAW;YACX,UAAU;YACV,UAAU;YACV,UAAU;YACV,OAAO;YACP,YAAY;YACZ,UAAU;SACX;QACD,UAAU;QACV;YACE,UAAU;YACV,UAAU;YACV,WAAW;YACX,SAAS;YACT,SAAS;YACT,OAAO;YACP,SAAS;YACT,WAAW;SACZ;QACD,WAAW;QACX;YACE,SAAS;YACT,YAAY;YACZ,WAAW;YACX,WAAW;YACX,SAAS;YACT,UAAU;YACV,QAAQ;YACR,WAAW;SACZ;QACD,UAAU;QACV,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC;KACjF;IACD,UAAU,EAAE;QACV,eAAe;QACf;YACE,SAAS;YACT,UAAU;YACV,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,UAAU;YACV,SAAS;SACV;QACD,UAAU;QACV,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;QACjF,aAAa;QACb;YACE,SAAS;YACT,YAAY;YACZ,SAAS;YACT,SAAS;YACT,WAAW;YACX,UAAU;YACV,UAAU;YACV,MAAM;SACP;KACF;IACD,MAAM,EAAE;QACN,UAAU;QACV;YACE,YAAY;YACZ,UAAU;YACV,UAAU;YACV,OAAO;YACP,OAAO;YACP,aAAa;YACb,UAAU;YACV,MAAM;SACP;QACD,gBAAgB;QAChB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;QAC5E,cAAc;QACd;YACE,gBAAgB;YAChB,YAAY;YACZ,cAAc;YACd,SAAS;YACT,SAAS;YACT,QAAQ;YACR,YAAY;YACZ,YAAY;SACb;KACF;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAgB,EAAE,UAAkB;IACnE,MAAM,IAAI,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAgB,EAAE,UAAkB;IACvE,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACjD,iEAAiE;IACjE,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa;IACjD,MAAM,MAAM,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IACzC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,oBAAoB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AACpD,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waking agent: Reflection cycle.
|
|
3
|
+
*
|
|
4
|
+
* Analyzes operator conversations, gathers context from web and community,
|
|
5
|
+
* and synthesizes insights for storage in memory.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMClient, OpenClawAPI, ReflectionMode } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Run the reflection cycle.
|
|
10
|
+
*
|
|
11
|
+
* New flow:
|
|
12
|
+
* 1. Get recent operator conversations from working memory
|
|
13
|
+
* 2. Extract topics from those conversations
|
|
14
|
+
* 3. Search Moltbook (optional) and web (optional) for related content
|
|
15
|
+
* 4. Synthesize context into a unified understanding
|
|
16
|
+
* 5. Store in both local memory and OpenClaw memory
|
|
17
|
+
*/
|
|
18
|
+
export declare function runReflectionCycle(client: LLMClient, api: OpenClawAPI, options?: {
|
|
19
|
+
dryRun?: boolean;
|
|
20
|
+
mode?: ReflectionMode;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* @deprecated Use runReflectionCycle instead.
|
|
24
|
+
* Kept for backwards compatibility.
|
|
25
|
+
*/
|
|
26
|
+
export declare function checkAndEngage(client: LLMClient): Promise<void>;
|
|
27
|
+
//# sourceMappingURL=waking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waking.d.ts","sourceRoot":"","sources":["../../src/waking.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EACX,cAAc,EAEf,MAAM,YAAY,CAAC;AA+DpB;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,WAAW,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,cAAc,CAAA;CAAE,GACpD,OAAO,CAAC,IAAI,CAAC,CA8Gf;AAID;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BrE"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Waking agent: Reflection cycle.
|
|
3
|
+
*
|
|
4
|
+
* Analyzes operator conversations, gathers context from web and community,
|
|
5
|
+
* and synthesizes insights for storage in memory.
|
|
6
|
+
*/
|
|
7
|
+
import { MAX_TOKENS_SUMMARY, CONTENT_PREVIEW_LENGTH, getVocabularyRotation, } from "./config.js";
|
|
8
|
+
import { formatVocabularyHint } from "./vocabulary.js";
|
|
9
|
+
import { deepMemoryStats, storeDeepMemory } from "./memory.js";
|
|
10
|
+
import { SUMMARIZER_PROMPT, renderTemplate } from "./persona.js";
|
|
11
|
+
import { loadState, saveState } from "./state.js";
|
|
12
|
+
import { callWithRetry, WAKING_RETRY_OPTS } from "./llm.js";
|
|
13
|
+
import { gatherContext, synthesizeContext } from "./synthesis.js";
|
|
14
|
+
import { getRecentConversations } from "./topics.js";
|
|
15
|
+
import logger from "./logger.js";
|
|
16
|
+
import { updateMetaLoopDepth } from "./meta-loop.js";
|
|
17
|
+
/**
|
|
18
|
+
* Summarize a synthesis for working memory storage.
|
|
19
|
+
*/
|
|
20
|
+
async function summarizeSynthesis(client, synthesis, topics) {
|
|
21
|
+
const interaction = {
|
|
22
|
+
type: "reflection_synthesis",
|
|
23
|
+
topics: topics.join(", "),
|
|
24
|
+
synthesis_preview: synthesis.slice(0, CONTENT_PREVIEW_LENGTH),
|
|
25
|
+
};
|
|
26
|
+
const { text } = await callWithRetry(client, {
|
|
27
|
+
maxTokens: MAX_TOKENS_SUMMARY,
|
|
28
|
+
system: "You compress reflections into single-sentence memory traces.",
|
|
29
|
+
messages: [
|
|
30
|
+
{
|
|
31
|
+
role: "user",
|
|
32
|
+
content: renderTemplate(SUMMARIZER_PROMPT, {
|
|
33
|
+
interaction: JSON.stringify(interaction, null, 2),
|
|
34
|
+
}),
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
}, WAKING_RETRY_OPTS);
|
|
38
|
+
return text.trim();
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Store synthesis results in OpenClaw memory if available.
|
|
42
|
+
*/
|
|
43
|
+
async function storeInOpenClawMemory(api, synthesis, context) {
|
|
44
|
+
if (!api.memory) {
|
|
45
|
+
logger.debug("OpenClaw memory API not available, skipping storage");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
await api.memory.store(synthesis, {
|
|
50
|
+
type: "reflection_synthesis",
|
|
51
|
+
topics: context.topics,
|
|
52
|
+
timestamp: new Date().toISOString(),
|
|
53
|
+
hasMoltbookContext: !!context.moltbookContext,
|
|
54
|
+
hasWebContext: !!context.webContext,
|
|
55
|
+
hasCommunityContext: !!context.communityContext,
|
|
56
|
+
});
|
|
57
|
+
logger.info("Stored synthesis in OpenClaw memory");
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
logger.error(`Failed to store in OpenClaw memory: ${error}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Run the reflection cycle.
|
|
65
|
+
*
|
|
66
|
+
* New flow:
|
|
67
|
+
* 1. Get recent operator conversations from working memory
|
|
68
|
+
* 2. Extract topics from those conversations
|
|
69
|
+
* 3. Search Moltbook (optional) and web (optional) for related content
|
|
70
|
+
* 4. Synthesize context into a unified understanding
|
|
71
|
+
* 5. Store in both local memory and OpenClaw memory
|
|
72
|
+
*/
|
|
73
|
+
export async function runReflectionCycle(client, api, options) {
|
|
74
|
+
const dryRun = options?.dryRun ?? false;
|
|
75
|
+
const mode = options?.mode ?? "synthesis";
|
|
76
|
+
logger.info(`ElectricSheep reflection cycle starting (mode: ${mode})`);
|
|
77
|
+
// Check if we have any conversations to reflect on
|
|
78
|
+
const recentConversations = getRecentConversations();
|
|
79
|
+
if (recentConversations.length === 0) {
|
|
80
|
+
logger.info("No recent conversations to reflect on");
|
|
81
|
+
if (!dryRun) {
|
|
82
|
+
storeDeepMemory({
|
|
83
|
+
summary: "Reflection cycle ran but no recent operator conversations to process.",
|
|
84
|
+
type: "observation",
|
|
85
|
+
}, "observation");
|
|
86
|
+
}
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
logger.info(`Found ${recentConversations.length} recent conversations to analyze`);
|
|
90
|
+
// Gather context from all sources
|
|
91
|
+
const context = await gatherContext(client, api);
|
|
92
|
+
if (context.topics.length === 0) {
|
|
93
|
+
logger.info("No topics extracted from conversations");
|
|
94
|
+
if (!dryRun) {
|
|
95
|
+
storeDeepMemory({
|
|
96
|
+
summary: "Analyzed recent conversations but no clear topics emerged.",
|
|
97
|
+
type: "observation",
|
|
98
|
+
}, "observation");
|
|
99
|
+
}
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
logger.info(`Extracted ${context.topics.length} topics: ${context.topics.join("; ")}`);
|
|
103
|
+
// Vocabulary rotation for waking prompts
|
|
104
|
+
let vocabHint;
|
|
105
|
+
if (getVocabularyRotation()) {
|
|
106
|
+
const wakingState = loadState();
|
|
107
|
+
const cycleCounts = wakingState.prompt_cycle_counts ?? { dream: 0, reflection: 0, waking: 0 };
|
|
108
|
+
vocabHint = formatVocabularyHint("waking", cycleCounts.waking);
|
|
109
|
+
cycleCounts.waking += 1;
|
|
110
|
+
wakingState.prompt_cycle_counts = cycleCounts;
|
|
111
|
+
saveState(wakingState);
|
|
112
|
+
}
|
|
113
|
+
// Generate synthesis
|
|
114
|
+
const synthesis = await synthesizeContext(client, context, vocabHint, mode);
|
|
115
|
+
if (!synthesis) {
|
|
116
|
+
logger.warn("Synthesis generation failed or returned empty");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
// Store in local memory systems
|
|
120
|
+
const summary = await summarizeSynthesis(client, synthesis, context.topics);
|
|
121
|
+
if (dryRun) {
|
|
122
|
+
// Print synthesis output instead of storing
|
|
123
|
+
console.log("\n--- DRY RUN: Reflection Synthesis ---\n");
|
|
124
|
+
console.log(`Topics: ${context.topics.join(", ")}\n`);
|
|
125
|
+
console.log(synthesis);
|
|
126
|
+
console.log(`\nSummary: ${summary}`);
|
|
127
|
+
console.log("\n--- End Dry Run ---\n");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Store full context in deep memory (includes summary for later retrieval)
|
|
131
|
+
storeDeepMemory({
|
|
132
|
+
type: "reflection_synthesis",
|
|
133
|
+
topics: context.topics,
|
|
134
|
+
synthesis,
|
|
135
|
+
summary,
|
|
136
|
+
contextSources: {
|
|
137
|
+
operator: true,
|
|
138
|
+
moltbook: !!context.moltbookContext,
|
|
139
|
+
web: !!context.webContext,
|
|
140
|
+
community: !!context.communityContext,
|
|
141
|
+
},
|
|
142
|
+
}, "reflection");
|
|
143
|
+
// Store in OpenClaw memory if available
|
|
144
|
+
await storeInOpenClawMemory(api, synthesis, context);
|
|
145
|
+
// Update state
|
|
146
|
+
const state = loadState();
|
|
147
|
+
state.last_check = new Date().toISOString();
|
|
148
|
+
state.checks_today = (state.checks_today ?? 0) + 1;
|
|
149
|
+
state.last_reflection_topics = context.topics;
|
|
150
|
+
saveState(state);
|
|
151
|
+
// Update recursive reflection guard
|
|
152
|
+
updateMetaLoopDepth(context.topics);
|
|
153
|
+
logger.info("Reflection cycle complete");
|
|
154
|
+
const stats = deepMemoryStats();
|
|
155
|
+
logger.debug(`Deep memories: ${stats.total_memories} (${stats.undreamed} undreamed)`);
|
|
156
|
+
}
|
|
157
|
+
// ─── Legacy Support ─────────────────────────────────────────────────────────
|
|
158
|
+
/**
|
|
159
|
+
* @deprecated Use runReflectionCycle instead.
|
|
160
|
+
* Kept for backwards compatibility.
|
|
161
|
+
*/
|
|
162
|
+
export async function checkAndEngage(client) {
|
|
163
|
+
logger.warn("checkAndEngage is deprecated. Use runReflectionCycle instead. " +
|
|
164
|
+
"Running reflection cycle...");
|
|
165
|
+
// Create a minimal API object for the reflection cycle
|
|
166
|
+
// This won't have memory but will still work
|
|
167
|
+
const minimalApi = {
|
|
168
|
+
registerTool: () => { },
|
|
169
|
+
registerCli: () => { },
|
|
170
|
+
registerHook: () => { },
|
|
171
|
+
on: () => { },
|
|
172
|
+
registerService: (_def) => { },
|
|
173
|
+
registerGatewayMethod: (_m, _h) => { },
|
|
174
|
+
runtime: {
|
|
175
|
+
config: { loadConfig: () => ({}) },
|
|
176
|
+
subagent: {
|
|
177
|
+
run: async () => ({ runId: "mock" }),
|
|
178
|
+
waitForRun: async () => ({ status: "ok" }),
|
|
179
|
+
getSessionMessages: async () => ({ messages: [] }),
|
|
180
|
+
},
|
|
181
|
+
system: {
|
|
182
|
+
enqueueSystemEvent: () => { },
|
|
183
|
+
requestHeartbeatNow: () => { },
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
await runReflectionCycle(client, minimalApi);
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=waking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waking.js","sourceRoot":"","sources":["../../src/waking.ts"],"names":[],"mappings":"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"}
|