openclawdreams 3.0.6 → 3.0.7
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 +13 -0
- 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 +584 -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 +463 -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 +253 -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 +188 -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,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured instrumentation for the dream cycle.
|
|
3
|
+
*
|
|
4
|
+
* Collects phase timings and LLM call metadata so failures
|
|
5
|
+
* can be diagnosed from the log without guesswork.
|
|
6
|
+
*/
|
|
7
|
+
import type { TokenUsage } from "./types.js";
|
|
8
|
+
export interface LLMCallRecord {
|
|
9
|
+
phase: string;
|
|
10
|
+
model: string;
|
|
11
|
+
input_tokens: number;
|
|
12
|
+
output_tokens: number;
|
|
13
|
+
duration_ms: number;
|
|
14
|
+
}
|
|
15
|
+
export interface PhaseRecord {
|
|
16
|
+
phase: string;
|
|
17
|
+
status: "ok" | "error" | "skipped";
|
|
18
|
+
duration_ms: number;
|
|
19
|
+
error?: string;
|
|
20
|
+
llm_calls: LLMCallRecord[];
|
|
21
|
+
metadata?: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface DreamCycleTrace {
|
|
24
|
+
run_id: string;
|
|
25
|
+
started_at: string;
|
|
26
|
+
ended_at: string;
|
|
27
|
+
total_duration_ms: number;
|
|
28
|
+
phases: PhaseRecord[];
|
|
29
|
+
total_llm_calls: number;
|
|
30
|
+
total_input_tokens: number;
|
|
31
|
+
total_output_tokens: number;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Lightweight tracer for a single dream cycle run.
|
|
35
|
+
*
|
|
36
|
+
* Usage:
|
|
37
|
+
* const tracer = new DreamTracer();
|
|
38
|
+
* tracer.startPhase("load_state");
|
|
39
|
+
* // ... do work ...
|
|
40
|
+
* tracer.endPhase("load_state");
|
|
41
|
+
*
|
|
42
|
+
* // For LLM calls:
|
|
43
|
+
* tracer.startPhase("generate_dream:first_pass");
|
|
44
|
+
* const result = await callWithRetry(...);
|
|
45
|
+
* tracer.recordLLMCall("generate_dream:first_pass", model, result.usage, startTime);
|
|
46
|
+
* tracer.endPhase("generate_dream:first_pass");
|
|
47
|
+
*
|
|
48
|
+
* tracer.finish(); // logs the full trace
|
|
49
|
+
*/
|
|
50
|
+
export declare class DreamTracer {
|
|
51
|
+
readonly runId: string;
|
|
52
|
+
private readonly startedAt;
|
|
53
|
+
private readonly phases;
|
|
54
|
+
private readonly activePhases;
|
|
55
|
+
constructor(runId?: string);
|
|
56
|
+
startPhase(phase: string): void;
|
|
57
|
+
recordLLMCall(phase: string, model: string, usage: TokenUsage | undefined, startTime: number): void;
|
|
58
|
+
endPhase(phase: string, opts?: {
|
|
59
|
+
status?: "ok" | "error" | "skipped";
|
|
60
|
+
error?: string;
|
|
61
|
+
metadata?: Record<string, unknown>;
|
|
62
|
+
}): void;
|
|
63
|
+
skipPhase(phase: string, reason?: string): void;
|
|
64
|
+
finish(): DreamCycleTrace;
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAO;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAGzB;gBAEQ,KAAK,CAAC,EAAE,MAAM;IAM1B,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAK/B,aAAa,CACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,GAAG,SAAS,EAC7B,SAAS,EAAE,MAAM,GAChB,IAAI;IAqBP,QAAQ,CACN,KAAK,EAAE,MAAM,EACb,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,SAAS,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,IAAI;IAoBP,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAa/C,MAAM,IAAI,eAAe;CAoC1B"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured instrumentation for the dream cycle.
|
|
3
|
+
*
|
|
4
|
+
* Collects phase timings and LLM call metadata so failures
|
|
5
|
+
* can be diagnosed from the log without guesswork.
|
|
6
|
+
*/
|
|
7
|
+
import { randomUUID } from "node:crypto";
|
|
8
|
+
import logger from "./logger.js";
|
|
9
|
+
/**
|
|
10
|
+
* Lightweight tracer for a single dream cycle run.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* const tracer = new DreamTracer();
|
|
14
|
+
* tracer.startPhase("load_state");
|
|
15
|
+
* // ... do work ...
|
|
16
|
+
* tracer.endPhase("load_state");
|
|
17
|
+
*
|
|
18
|
+
* // For LLM calls:
|
|
19
|
+
* tracer.startPhase("generate_dream:first_pass");
|
|
20
|
+
* const result = await callWithRetry(...);
|
|
21
|
+
* tracer.recordLLMCall("generate_dream:first_pass", model, result.usage, startTime);
|
|
22
|
+
* tracer.endPhase("generate_dream:first_pass");
|
|
23
|
+
*
|
|
24
|
+
* tracer.finish(); // logs the full trace
|
|
25
|
+
*/
|
|
26
|
+
export class DreamTracer {
|
|
27
|
+
runId;
|
|
28
|
+
startedAt;
|
|
29
|
+
phases = [];
|
|
30
|
+
activePhases = new Map();
|
|
31
|
+
constructor(runId) {
|
|
32
|
+
this.runId = runId ?? randomUUID();
|
|
33
|
+
this.startedAt = new Date();
|
|
34
|
+
logger.info(`[trace:${this.runId}] Dream cycle instrumentation started`);
|
|
35
|
+
}
|
|
36
|
+
startPhase(phase) {
|
|
37
|
+
this.activePhases.set(phase, { start: performance.now(), llm_calls: [] });
|
|
38
|
+
logger.debug(`[trace:${this.runId}] phase:${phase} started`);
|
|
39
|
+
}
|
|
40
|
+
recordLLMCall(phase, model, usage, startTime) {
|
|
41
|
+
const duration_ms = Math.round(performance.now() - startTime);
|
|
42
|
+
const record = {
|
|
43
|
+
phase,
|
|
44
|
+
model,
|
|
45
|
+
input_tokens: usage?.input_tokens ?? 0,
|
|
46
|
+
output_tokens: usage?.output_tokens ?? 0,
|
|
47
|
+
duration_ms,
|
|
48
|
+
};
|
|
49
|
+
const active = this.activePhases.get(phase);
|
|
50
|
+
if (active) {
|
|
51
|
+
active.llm_calls.push(record);
|
|
52
|
+
}
|
|
53
|
+
logger.info(`[trace:${this.runId}] llm_call phase=${phase} model=${model} ` +
|
|
54
|
+
`in=${record.input_tokens} out=${record.output_tokens} dur=${duration_ms}ms`);
|
|
55
|
+
}
|
|
56
|
+
endPhase(phase, opts) {
|
|
57
|
+
const active = this.activePhases.get(phase);
|
|
58
|
+
const duration_ms = active ? Math.round(performance.now() - active.start) : 0;
|
|
59
|
+
const status = opts?.status ?? "ok";
|
|
60
|
+
this.phases.push({
|
|
61
|
+
phase,
|
|
62
|
+
status,
|
|
63
|
+
duration_ms,
|
|
64
|
+
error: opts?.error,
|
|
65
|
+
llm_calls: active?.llm_calls ?? [],
|
|
66
|
+
metadata: opts?.metadata,
|
|
67
|
+
});
|
|
68
|
+
this.activePhases.delete(phase);
|
|
69
|
+
logger.debug(`[trace:${this.runId}] phase:${phase} ended status=${status} dur=${duration_ms}ms`);
|
|
70
|
+
}
|
|
71
|
+
skipPhase(phase, reason) {
|
|
72
|
+
this.phases.push({
|
|
73
|
+
phase,
|
|
74
|
+
status: "skipped",
|
|
75
|
+
duration_ms: 0,
|
|
76
|
+
llm_calls: [],
|
|
77
|
+
metadata: reason ? { reason } : undefined,
|
|
78
|
+
});
|
|
79
|
+
logger.debug(`[trace:${this.runId}] phase:${phase} skipped${reason ? `: ${reason}` : ""}`);
|
|
80
|
+
}
|
|
81
|
+
finish() {
|
|
82
|
+
const ended = new Date();
|
|
83
|
+
const total_duration_ms = ended.getTime() - this.startedAt.getTime();
|
|
84
|
+
let total_llm_calls = 0;
|
|
85
|
+
let total_input_tokens = 0;
|
|
86
|
+
let total_output_tokens = 0;
|
|
87
|
+
for (const p of this.phases) {
|
|
88
|
+
for (const c of p.llm_calls) {
|
|
89
|
+
total_llm_calls++;
|
|
90
|
+
total_input_tokens += c.input_tokens;
|
|
91
|
+
total_output_tokens += c.output_tokens;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const trace = {
|
|
95
|
+
run_id: this.runId,
|
|
96
|
+
started_at: this.startedAt.toISOString(),
|
|
97
|
+
ended_at: ended.toISOString(),
|
|
98
|
+
total_duration_ms,
|
|
99
|
+
phases: this.phases,
|
|
100
|
+
total_llm_calls,
|
|
101
|
+
total_input_tokens,
|
|
102
|
+
total_output_tokens,
|
|
103
|
+
};
|
|
104
|
+
logger.info(`[trace:${this.runId}] Dream cycle complete: ` +
|
|
105
|
+
`${total_duration_ms}ms, ${this.phases.length} phases, ` +
|
|
106
|
+
`${total_llm_calls} LLM calls, ` +
|
|
107
|
+
`${total_input_tokens} in / ${total_output_tokens} out tokens`);
|
|
108
|
+
logger.debug(`[trace:${this.runId}] full_trace=${JSON.stringify(trace)}`);
|
|
109
|
+
return trace;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM client utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides retry configuration and call helpers used by both
|
|
5
|
+
* the waking and dreamer modules. The actual LLM client is
|
|
6
|
+
* provided by the OpenClaw gateway (see index.ts).
|
|
7
|
+
*/
|
|
8
|
+
import { type Options as RetryOptions } from "p-retry";
|
|
9
|
+
import type { LLMClient, LLMResponse } from "./types.js";
|
|
10
|
+
/** Standard retry options for waking-state LLM calls. */
|
|
11
|
+
export declare const WAKING_RETRY_OPTS: RetryOptions;
|
|
12
|
+
/** Retry options for dream-cycle LLM calls (longer timeouts). */
|
|
13
|
+
export declare const DREAM_RETRY_OPTS: RetryOptions;
|
|
14
|
+
/**
|
|
15
|
+
* Helper: call LLM with retry and return the response.
|
|
16
|
+
*/
|
|
17
|
+
export declare function callWithRetry(client: LLMClient, params: {
|
|
18
|
+
model?: string;
|
|
19
|
+
maxTokens: number;
|
|
20
|
+
system: string;
|
|
21
|
+
messages: Array<{
|
|
22
|
+
role: string;
|
|
23
|
+
content: string;
|
|
24
|
+
}>;
|
|
25
|
+
}, retryOpts?: RetryOptions): Promise<LLMResponse>;
|
|
26
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAe,EAAE,KAAK,OAAO,IAAI,YAAY,EAAE,MAAM,SAAS,CAAC;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzD,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,EAAE,YAS/B,CAAC;AAEF,iEAAiE;AACjE,eAAO,MAAM,gBAAgB,EAAE,YAS9B,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE;IACN,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD,EACD,SAAS,GAAE,YAAgC,GAC1C,OAAO,CAAC,WAAW,CAAC,CAWtB"}
|
package/dist/src/llm.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared LLM client utilities.
|
|
3
|
+
*
|
|
4
|
+
* Provides retry configuration and call helpers used by both
|
|
5
|
+
* the waking and dreamer modules. The actual LLM client is
|
|
6
|
+
* provided by the OpenClaw gateway (see index.ts).
|
|
7
|
+
*/
|
|
8
|
+
import pRetry from "p-retry";
|
|
9
|
+
import { AGENT_MODEL } from "./config.js";
|
|
10
|
+
import logger from "./logger.js";
|
|
11
|
+
/** Standard retry options for waking-state LLM calls. */
|
|
12
|
+
export const WAKING_RETRY_OPTS = {
|
|
13
|
+
retries: 3,
|
|
14
|
+
minTimeout: 1000,
|
|
15
|
+
maxTimeout: 10000,
|
|
16
|
+
onFailedAttempt: (error) => {
|
|
17
|
+
logger.warn(`LLM attempt failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
/** Retry options for dream-cycle LLM calls (longer timeouts). */
|
|
21
|
+
export const DREAM_RETRY_OPTS = {
|
|
22
|
+
retries: 3,
|
|
23
|
+
minTimeout: 2000,
|
|
24
|
+
maxTimeout: 20000,
|
|
25
|
+
onFailedAttempt: (error) => {
|
|
26
|
+
logger.warn(`Dream generation failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Helper: call LLM with retry and return the response.
|
|
31
|
+
*/
|
|
32
|
+
export function callWithRetry(client, params, retryOpts = WAKING_RETRY_OPTS) {
|
|
33
|
+
return pRetry(() => client.createMessage({
|
|
34
|
+
model: params.model ?? AGENT_MODEL,
|
|
35
|
+
maxTokens: params.maxTokens,
|
|
36
|
+
system: params.system,
|
|
37
|
+
messages: params.messages,
|
|
38
|
+
}), retryOpts);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/llm.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,MAAwC,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC,yDAAyD;AACzD,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,CAAC,IAAI,CACT,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,IAAI;IAChB,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;QACzB,MAAM,CAAC,IAAI,CACT,4BAA4B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAiB,EACjB,MAKC,EACD,YAA0B,iBAAiB;IAE3C,OAAO,MAAM,CACX,GAAG,EAAE,CACH,MAAM,CAAC,aAAa,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,WAAW;QAClC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,EACJ,SAAS,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAC;AAGnC,QAAA,MAAM,MAAM,0BA4BV,CAAC;AAEH,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEjD;AAED,wBAAgB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3C;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createLogger, format, transports } from "winston";
|
|
2
|
+
import "winston-daily-rotate-file";
|
|
3
|
+
import { getDataDir } from "./config.js";
|
|
4
|
+
const logger = createLogger({
|
|
5
|
+
level: "info",
|
|
6
|
+
format: format.combine(format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), format.printf(({ timestamp, level, message }) => `${timestamp} [${level.toUpperCase()}]: ${message}`)),
|
|
7
|
+
transports: [
|
|
8
|
+
new transports.DailyRotateFile({
|
|
9
|
+
dirname: getDataDir(),
|
|
10
|
+
filename: "openclawdreams-%DATE%.log",
|
|
11
|
+
datePattern: "YYYY-MM-DD",
|
|
12
|
+
zippedArchive: true,
|
|
13
|
+
maxSize: "20m",
|
|
14
|
+
maxFiles: "14d",
|
|
15
|
+
level: "debug",
|
|
16
|
+
}),
|
|
17
|
+
new transports.Console({
|
|
18
|
+
format: format.combine(format.colorize(), format.printf(({ timestamp, level, message }) => `${timestamp} [${level}]: ${message}`)),
|
|
19
|
+
}),
|
|
20
|
+
],
|
|
21
|
+
});
|
|
22
|
+
export function setVerbose(verbose) {
|
|
23
|
+
logger.level = verbose ? "debug" : "info";
|
|
24
|
+
}
|
|
25
|
+
export function closeLogger() {
|
|
26
|
+
return new Promise((resolve) => {
|
|
27
|
+
logger.on("finish", resolve);
|
|
28
|
+
logger.end();
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export default logger;
|
|
32
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,2BAA2B,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,MAAM,GAAG,YAAY,CAAC;IAC1B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM,CAAC,OAAO,CACpB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC,EACnD,MAAM,CAAC,MAAM,CACX,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAChC,GAAG,SAAS,KAAK,KAAK,CAAC,WAAW,EAAE,MAAM,OAAO,EAAE,CACtD,CACF;IACD,UAAU,EAAE;QACV,IAAI,UAAU,CAAC,eAAe,CAAC;YAC7B,OAAO,EAAE,UAAU,EAAE;YACrB,QAAQ,EAAE,2BAA2B;YACrC,WAAW,EAAE,YAAY;YACzB,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;YACf,KAAK,EAAE,OAAO;SACf,CAAC;QACF,IAAI,UAAU,CAAC,OAAO,CAAC;YACrB,MAAM,EAAE,MAAM,CAAC,OAAO,CACpB,MAAM,CAAC,QAAQ,EAAE,EACjB,MAAM,CAAC,MAAM,CACX,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,GAAG,SAAS,KAAK,KAAK,MAAM,OAAO,EAAE,CACzE,CACF;SACF,CAAC;KACH;CACF,CAAC,CAAC;AAEH,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypted deep memory system.
|
|
3
|
+
*
|
|
4
|
+
* All memories are encrypted with AES-256-GCM in a SQLite database.
|
|
5
|
+
* The waking agent writes to deep memory but cannot read it — only
|
|
6
|
+
* the dream process can decrypt. Context for LLM prompts is formatted
|
|
7
|
+
* via `formatDeepMemoryContext()`.
|
|
8
|
+
*/
|
|
9
|
+
import type { DecryptedMemory, DeepMemoryStats, MemoryEntry } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Parse `git diff --stat` output into structured FileDiff[].
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseDiffStat(diffStat: string): import("./types.js").FileDiff[];
|
|
14
|
+
/**
|
|
15
|
+
* Close the shared SQLite connection. Safe to call multiple times.
|
|
16
|
+
* After closing, the next getDb() call will reopen.
|
|
17
|
+
*/
|
|
18
|
+
export declare function closeDb(): void;
|
|
19
|
+
export declare function storeDeepMemory(content: Record<string, unknown>, category?: string): number | bigint;
|
|
20
|
+
export declare function getDeepMemoryById(id: number | bigint): DecryptedMemory | null;
|
|
21
|
+
export declare function retrieveUndreamedMemories(): DecryptedMemory[];
|
|
22
|
+
export declare function markAsDreamed(memoryIds: number[]): void;
|
|
23
|
+
export declare function deepMemoryStats(): DeepMemoryStats;
|
|
24
|
+
export interface DeepMemoryQueryOptions {
|
|
25
|
+
limit?: number;
|
|
26
|
+
categories?: string[];
|
|
27
|
+
undreamedOnly?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Query deep memory with optional filters. Decrypts results, handles
|
|
31
|
+
* corruption gracefully, returns in chronological order.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getRecentDeepMemories(options?: DeepMemoryQueryOptions): DecryptedMemory[];
|
|
34
|
+
/**
|
|
35
|
+
* Format decrypted memories as a text block for LLM prompts.
|
|
36
|
+
*
|
|
37
|
+
* Extracts `content.summary` when available, falls back to truncated JSON.
|
|
38
|
+
* Respects an approximate token budget (1 token ≈ 4 chars).
|
|
39
|
+
*/
|
|
40
|
+
export declare function formatDeepMemoryContext(memories?: DecryptedMemory[], maxTokensApprox?: number): string;
|
|
41
|
+
/** Register a new dream. INSERT OR IGNORE (idempotent). */
|
|
42
|
+
export declare function registerDream(filename: string, title: string, dreamDate: string, options?: {
|
|
43
|
+
isNightmare?: boolean;
|
|
44
|
+
isMetaSynthesis?: boolean;
|
|
45
|
+
sourceFilenames?: string[];
|
|
46
|
+
deepMemoryId?: number | bigint;
|
|
47
|
+
}): void;
|
|
48
|
+
/** Increment remember_count for a dream that was selected. */
|
|
49
|
+
export declare function incrementRememberCount(filename: string): void;
|
|
50
|
+
/**
|
|
51
|
+
* Weighted random selection: score = 1/(count+1) * max(1, age_days).
|
|
52
|
+
* Fetch all rows from SQLite, compute scores in JS, do weighted pick.
|
|
53
|
+
* Returns filename and deep_memory_id, or null if table is empty.
|
|
54
|
+
*/
|
|
55
|
+
export declare function selectDreamToRemember(today: string): {
|
|
56
|
+
filename: string;
|
|
57
|
+
deep_memory_id: number | null;
|
|
58
|
+
} | null;
|
|
59
|
+
/** For inspection/testing. */
|
|
60
|
+
export declare function getDreamRemembrances(): Array<{
|
|
61
|
+
filename: string;
|
|
62
|
+
title: string;
|
|
63
|
+
dream_date: string;
|
|
64
|
+
remember_count: number;
|
|
65
|
+
is_nightmare: number;
|
|
66
|
+
is_meta_synthesis: number;
|
|
67
|
+
source_filenames: string | null;
|
|
68
|
+
deep_memory_id: number | null;
|
|
69
|
+
}>;
|
|
70
|
+
export interface DreamLineageRow {
|
|
71
|
+
id: number;
|
|
72
|
+
dream_filename: string;
|
|
73
|
+
parent_memory_ids: string | null;
|
|
74
|
+
thematic_kin: string | null;
|
|
75
|
+
dominant_concepts: string | null;
|
|
76
|
+
created_at: string;
|
|
77
|
+
}
|
|
78
|
+
export declare function insertDreamLineage(dreamFilename: string, parentMemoryIds: number[], thematicKin: string[], dominantConcepts: string[]): void;
|
|
79
|
+
export declare function getAllDreamLineage(): DreamLineageRow[];
|
|
80
|
+
export declare function getDreamLineageByFilename(filename: string): DreamLineageRow | null;
|
|
81
|
+
/**
|
|
82
|
+
* Find thematic kin for a dream by computing concept overlap with all prior dreams.
|
|
83
|
+
* Returns filenames of dreams with overlap >= threshold (default 0.3).
|
|
84
|
+
*/
|
|
85
|
+
export declare function findThematicKin(currentConcepts: string[], currentFilename: string, threshold?: number): Array<{
|
|
86
|
+
filename: string;
|
|
87
|
+
overlap: number;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Store a structured MemoryEntry in encrypted deep memory.
|
|
91
|
+
*
|
|
92
|
+
* Accepts either a MemoryEntry directly, or a legacy (summary, fullContext)
|
|
93
|
+
* pair for backward compatibility.
|
|
94
|
+
*/
|
|
95
|
+
export declare function remember(summaryOrEntry: string | MemoryEntry, fullContextOrCategory?: Record<string, unknown> | string, category?: string): void;
|
|
96
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"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"}
|