@christopherlittle51/postclaw 1.3.1 → 1.3.4
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/README.md +76 -690
- package/dashboard/README.md +89 -0
- package/dashboard/public/app.js +1023 -543
- package/dashboard/public/index.html +283 -75
- package/dashboard/public/styles.css +583 -126
- package/dist/dashboard/routes/config.d.ts.map +1 -1
- package/dist/dashboard/routes/config.js +17 -1
- package/dist/dashboard/routes/config.js.map +1 -1
- package/dist/dashboard/routes/graph.d.ts +2 -2
- package/dist/dashboard/routes/graph.d.ts.map +1 -1
- package/dist/dashboard/routes/graph.js +61 -23
- package/dist/dashboard/routes/graph.js.map +1 -1
- package/dist/dashboard/routes/memories.d.ts.map +1 -1
- package/dist/dashboard/routes/memories.js +97 -11
- package/dist/dashboard/routes/memories.js.map +1 -1
- package/dist/dashboard/routes/scripts.d.ts.map +1 -1
- package/dist/dashboard/routes/scripts.js +3 -1
- package/dist/dashboard/routes/scripts.js.map +1 -1
- package/dist/dashboard/routes/workspace.d.ts +4 -3
- package/dist/dashboard/routes/workspace.d.ts.map +1 -1
- package/dist/dashboard/routes/workspace.js +119 -7
- package/dist/dashboard/routes/workspace.js.map +1 -1
- package/dist/dashboard/server.js +1 -1
- package/dist/dashboard/server.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +189 -43
- package/dist/index.js.map +1 -1
- package/dist/schemas/validation.d.ts +108 -12
- package/dist/schemas/validation.d.ts.map +1 -1
- package/dist/schemas/validation.js +66 -11
- package/dist/schemas/validation.js.map +1 -1
- package/dist/scripts/bootstrap_persona.d.ts.map +1 -1
- package/dist/scripts/bootstrap_persona.js +3 -3
- package/dist/scripts/bootstrap_persona.js.map +1 -1
- package/dist/scripts/setup-db.d.ts.map +1 -1
- package/dist/scripts/setup-db.js +74 -37
- package/dist/scripts/setup-db.js.map +1 -1
- package/dist/scripts/sleep_cycle.d.ts +1 -0
- package/dist/scripts/sleep_cycle.d.ts.map +1 -1
- package/dist/scripts/sleep_cycle.js +209 -38
- package/dist/scripts/sleep_cycle.js.map +1 -1
- package/dist/services/config.d.ts +1 -0
- package/dist/services/config.d.ts.map +1 -1
- package/dist/services/config.js +15 -29
- package/dist/services/config.js.map +1 -1
- package/dist/services/db.d.ts +10 -0
- package/dist/services/db.d.ts.map +1 -1
- package/dist/services/db.js +38 -1
- package/dist/services/db.js.map +1 -1
- package/dist/services/llm.d.ts.map +1 -1
- package/dist/services/llm.js +3 -1
- package/dist/services/llm.js.map +1 -1
- package/dist/services/memoryService.d.ts +4 -2
- package/dist/services/memoryService.d.ts.map +1 -1
- package/dist/services/memoryService.js +127 -43
- package/dist/services/memoryService.js.map +1 -1
- package/dist/services/personaService.d.ts +25 -0
- package/dist/services/personaService.d.ts.map +1 -1
- package/dist/services/personaService.js +79 -0
- package/dist/services/personaService.js.map +1 -1
- package/dist/tests/dashboard-schemas.test.js +71 -1
- package/dist/tests/dashboard-schemas.test.js.map +1 -1
- package/openclaw.plugin.json +5 -0
- package/package.json +2 -1
- package/schemas/README.md +64 -0
|
@@ -115,7 +115,7 @@ const validation_js_1 = require("../schemas/validation.js");
|
|
|
115
115
|
// GRAPH SCHEMA
|
|
116
116
|
// =============================================================================
|
|
117
117
|
(0, vitest_1.describe)("GraphEdgeCreateSchema", () => {
|
|
118
|
-
(0, vitest_1.it)("accepts valid edge", () => {
|
|
118
|
+
(0, vitest_1.it)("accepts valid memory-to-memory edge", () => {
|
|
119
119
|
const result = validation_js_1.GraphEdgeCreateSchema.parse({
|
|
120
120
|
source_memory_id: "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
121
121
|
target_memory_id: "f1e2d3c4-b5a6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
@@ -123,6 +123,19 @@ const validation_js_1 = require("../schemas/validation.js");
|
|
|
123
123
|
});
|
|
124
124
|
(0, vitest_1.expect)(result.weight).toBe(1.0);
|
|
125
125
|
});
|
|
126
|
+
(0, vitest_1.it)("accepts persona-to-memory edge", () => {
|
|
127
|
+
const result = validation_js_1.GraphEdgeCreateSchema.parse({
|
|
128
|
+
source_persona_id: "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
129
|
+
target_memory_id: "f1e2d3c4-b5a6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
130
|
+
relationship_type: "defines",
|
|
131
|
+
});
|
|
132
|
+
(0, vitest_1.expect)(result.source_persona_id).toBe("a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d");
|
|
133
|
+
});
|
|
134
|
+
(0, vitest_1.it)("rejects edge with no source or target", () => {
|
|
135
|
+
(0, vitest_1.expect)(() => validation_js_1.GraphEdgeCreateSchema.parse({
|
|
136
|
+
relationship_type: "related_to",
|
|
137
|
+
})).toThrow();
|
|
138
|
+
});
|
|
126
139
|
(0, vitest_1.it)("rejects invalid UUID", () => {
|
|
127
140
|
(0, vitest_1.expect)(() => validation_js_1.GraphEdgeCreateSchema.parse({
|
|
128
141
|
source_memory_id: "not-a-uuid",
|
|
@@ -168,4 +181,61 @@ const validation_js_1 = require("../schemas/validation.js");
|
|
|
168
181
|
(0, vitest_1.expect)(() => validation_js_1.MemoryListQuerySchema.parse({ limit: "501" })).toThrow();
|
|
169
182
|
});
|
|
170
183
|
});
|
|
184
|
+
// =============================================================================
|
|
185
|
+
// NEW: PERSONA EDGE & WORKSPACE IMPORT SCHEMAS
|
|
186
|
+
// =============================================================================
|
|
187
|
+
(0, vitest_1.describe)("PersonaEdgeCreateSchema", () => {
|
|
188
|
+
(0, vitest_1.it)("accepts valid persona-memory link", () => {
|
|
189
|
+
const result = validation_js_1.PersonaEdgeCreateSchema.parse({
|
|
190
|
+
persona_id: "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
191
|
+
memory_id: "f1e2d3c4-b5a6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
192
|
+
relationship_type: "defines",
|
|
193
|
+
});
|
|
194
|
+
(0, vitest_1.expect)(result.weight).toBe(1.0);
|
|
195
|
+
(0, vitest_1.expect)(result.relationship_type).toBe("defines");
|
|
196
|
+
});
|
|
197
|
+
(0, vitest_1.it)("rejects invalid persona UUID", () => {
|
|
198
|
+
(0, vitest_1.expect)(() => validation_js_1.PersonaEdgeCreateSchema.parse({
|
|
199
|
+
persona_id: "not-valid",
|
|
200
|
+
memory_id: "f1e2d3c4-b5a6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
201
|
+
relationship_type: "supports",
|
|
202
|
+
})).toThrow();
|
|
203
|
+
});
|
|
204
|
+
(0, vitest_1.it)("rejects missing relationship", () => {
|
|
205
|
+
(0, vitest_1.expect)(() => validation_js_1.PersonaEdgeCreateSchema.parse({
|
|
206
|
+
persona_id: "a1b2c3d4-e5f6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
207
|
+
memory_id: "f1e2d3c4-b5a6-4a5b-8c9d-0e1f2a3b4c5d",
|
|
208
|
+
})).toThrow();
|
|
209
|
+
});
|
|
210
|
+
});
|
|
211
|
+
(0, vitest_1.describe)("WorkspaceImportSchema", () => {
|
|
212
|
+
(0, vitest_1.it)("accepts valid persona import", () => {
|
|
213
|
+
const result = validation_js_1.WorkspaceImportSchema.parse({
|
|
214
|
+
filename: "SOUL.md",
|
|
215
|
+
target: "persona",
|
|
216
|
+
});
|
|
217
|
+
(0, vitest_1.expect)(result.tier).toBe("stable");
|
|
218
|
+
(0, vitest_1.expect)(result.target).toBe("persona");
|
|
219
|
+
});
|
|
220
|
+
(0, vitest_1.it)("accepts valid memory import with tier", () => {
|
|
221
|
+
const result = validation_js_1.WorkspaceImportSchema.parse({
|
|
222
|
+
filename: "notes.md",
|
|
223
|
+
target: "memory",
|
|
224
|
+
tier: "permanent",
|
|
225
|
+
});
|
|
226
|
+
(0, vitest_1.expect)(result.tier).toBe("permanent");
|
|
227
|
+
});
|
|
228
|
+
(0, vitest_1.it)("rejects invalid target", () => {
|
|
229
|
+
(0, vitest_1.expect)(() => validation_js_1.WorkspaceImportSchema.parse({
|
|
230
|
+
filename: "test.md",
|
|
231
|
+
target: "invalid",
|
|
232
|
+
})).toThrow();
|
|
233
|
+
});
|
|
234
|
+
(0, vitest_1.it)("rejects empty filename", () => {
|
|
235
|
+
(0, vitest_1.expect)(() => validation_js_1.WorkspaceImportSchema.parse({
|
|
236
|
+
filename: "",
|
|
237
|
+
target: "persona",
|
|
238
|
+
})).toThrow();
|
|
239
|
+
});
|
|
240
|
+
});
|
|
171
241
|
//# sourceMappingURL=dashboard-schemas.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-schemas.test.js","sourceRoot":"","sources":["../../tests/dashboard-schemas.test.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,mCAA8C;AAC9C,
|
|
1
|
+
{"version":3,"file":"dashboard-schemas.test.js","sourceRoot":"","sources":["../../tests/dashboard-schemas.test.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -42,6 +42,11 @@
|
|
|
42
42
|
"type": "integer",
|
|
43
43
|
"description": "Total number of memories (semantic + linked) to inject into prompt.",
|
|
44
44
|
"default": 15
|
|
45
|
+
},
|
|
46
|
+
"debugLogging": {
|
|
47
|
+
"type": "boolean",
|
|
48
|
+
"description": "Enable verbose logging of hook events and contexts for debugging",
|
|
49
|
+
"default": false
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
52
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@christopherlittle51/postclaw",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "OpenClaw native plugin for PostgreSQL-backed RAG, memory, and persona management",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
"@sinclair/typebox": "^0.34.48",
|
|
45
45
|
"dotenv": "^17.3.1",
|
|
46
46
|
"postgres": "^3.4.8",
|
|
47
|
+
"ws": "^8.19.0",
|
|
47
48
|
"zod": "^4.3.6"
|
|
48
49
|
},
|
|
49
50
|
"devDependencies": {
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# PostClaw Schemas Validation
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
The `schemas/` directory, centered around `validation.ts`, acts as the data bodyguard for the entire PostClaw architecture.
|
|
6
|
+
|
|
7
|
+
When dealing with artificial intelligence, outputs can be unpredictable. An LLM might hallucinate a new category of memory, or forget to include a required ID when trying to update a fact. To prevent these AI errors from crashing the database or corrupting your agent's memory, PostClaw uses **Zod**, a TypeScript-first schema validation library.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 1. Database Row Validation
|
|
12
|
+
|
|
13
|
+
Before PostClaw trusts data coming from PostgreSQL, it runs it through a Zod schema to guarantee the shape and types.
|
|
14
|
+
|
|
15
|
+
* **`MemorySemanticRow` & `EpisodicRow`:** Ensures that every memory fetched from the database has a valid UUID (not just a random string), a proper JavaScript `Date` object for timestamps, and an authorized category (e.g., `core`, `concept`, `human`).
|
|
16
|
+
* **Why it matters:** This prevents runtime `undefined` errors if you manually alter the database outside of the plugin and accidentally create a malformed row.
|
|
17
|
+
|
|
18
|
+
## 2. Agent Tool Guardrails
|
|
19
|
+
|
|
20
|
+
OpenClaw allows agents to call "Tools" (functions) to perform actions like saving or modifying a memory. The schemas in this file strictly govern what the agent is allowed to pass to those tools.
|
|
21
|
+
|
|
22
|
+
* **`MemoryStoreSchema`:** When the agent calls `memory_store`, Zod enforces that the `content` is a string, and that the `tier` parameter is explicitly either `"permanent"`, `"session"`, or `"temporary"`. If the AI tries to use a tier like `"forever"`, the schema rejects it and returns a clean error to the LLM, prompting it to try again with the correct format.
|
|
23
|
+
* **`MemoryUpdateSchema`:** Enforces that the agent provides a valid UUID when attempting to supersede an old memory.
|
|
24
|
+
|
|
25
|
+
## 3. Sleep Cycle JSON Parsing
|
|
26
|
+
|
|
27
|
+
During the automated background maintenance (the sleep cycle), PostClaw asks the LLM to process thousands of words and return a compressed, structured JSON object outlining duplicate memories or new facts.
|
|
28
|
+
|
|
29
|
+
* **`EpisodicSummarySchema` & `ConsolidationEvaluationSchema`:** These schemas define the exact JSON format the LLM must return. If the LLM returns an array instead of an object, or forgets to include an `isDuplicate` boolean flag, Zod catches the error instantly.
|
|
30
|
+
* **Why it matters:** This is the most common point of failure for smaller LLMs. Without strict validation, bad JSON would break the parsing logic and silently fail to consolidate memories.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Troubleshooting Guide
|
|
35
|
+
|
|
36
|
+
### "Validation failed" or "ZodError" in Agent Logs
|
|
37
|
+
|
|
38
|
+
If you see a `ZodError` printed in your terminal while the agent is "thinking," it means the agent attempted to use a memory tool incorrectly.
|
|
39
|
+
|
|
40
|
+
* **Fix:** You generally don't need to do anything. OpenClaw automatically feeds the Zod error back to the LLM, which acts as a correction mechanism, teaching the AI how to fix its own formatting error on the next attempt. However, if the agent persistently fails over multiple turns, your primary LLM might be too weak to follow complex JSON instructions.
|
|
41
|
+
|
|
42
|
+
### Sleep Cycle: "Failed to parse LLM response for batch"
|
|
43
|
+
|
|
44
|
+
The background sleep script (e.g., Phase I or Phase IV) skipped a batch of memories because the LLM failed to match the `EpisodicSummarySchema`.
|
|
45
|
+
|
|
46
|
+
* **Fix:** The LLM you are using (e.g., through Ollama or LM Studio) likely included conversational text (like "Here is the JSON you requested:") or markdown formatting (` ```json ` tags) that breaks raw JSON parsing before Zod can even validate it. Switch to a stronger model (like Llama 3 or Qwen) or ensure your LLM prompt template enforces strict JSON-only outputs.
|
|
47
|
+
|
|
48
|
+
### UUID Validation Failures
|
|
49
|
+
|
|
50
|
+
If the dashboard or manual scripts throw an error about an invalid UUID, a function received a plain string instead of a true Database ID.
|
|
51
|
+
|
|
52
|
+
* **Fix:** Ensure any manual IDs you provide (such as when testing API routes or using the CLI) are formatted as standard 36-character `v4` UUIDs (e.g., `123e4567-e89b-12d3-a456-426614174000`). Zod intrinsically blocks unstructured strings.
|
|
53
|
+
|
|
54
|
+
### "Invalid Enum Value" during Memory Storage
|
|
55
|
+
|
|
56
|
+
If the agent attempts to save a new memory and the terminal throws an error stating `Received: 'critical' - Expected: 'permanent' | 'session' | 'temporary'`.
|
|
57
|
+
|
|
58
|
+
* **Fix:** The LLM hallucinated a memory tier or category that doesn't strictly exist within the plugin's Zod definitions. The agent must stick strictly to the enumerated values defined in `MemoryStoreSchema`. OpenClaw automatically reflects this error back to the LLM so it can correct its mistake on a retry.
|
|
59
|
+
|
|
60
|
+
### Date Object Parsing Errors
|
|
61
|
+
|
|
62
|
+
When the plugin pulls data from the PostgreSQL `memory_episodic` table using the `EpisodicRow` schema, Zod expects valid JavaScript Date objects for timestamps, not raw ISO strings.
|
|
63
|
+
|
|
64
|
+
* **Fix:** If you are building custom manual scripts interacting directly with the database rows, ensure you are utilizing `postgres.js`'s built-in date parsing or manually hydrating your JSON returns into Date objects before passing them into the Zod validator.
|