@christopherlittle51/postclaw 1.0.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.
- package/.env.example +4 -0
- package/LICENSE +15 -0
- package/README.md +731 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +506 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/validation.d.ts +81 -0
- package/dist/schemas/validation.d.ts.map +1 -0
- package/dist/schemas/validation.js +27 -0
- package/dist/schemas/validation.js.map +1 -0
- package/dist/scripts/bootstrap_persona.d.ts +20 -0
- package/dist/scripts/bootstrap_persona.d.ts.map +1 -0
- package/dist/scripts/bootstrap_persona.js +150 -0
- package/dist/scripts/bootstrap_persona.js.map +1 -0
- package/dist/scripts/bootstrap_tools.d.ts +2 -0
- package/dist/scripts/bootstrap_tools.d.ts.map +1 -0
- package/dist/scripts/bootstrap_tools.js +67 -0
- package/dist/scripts/bootstrap_tools.js.map +1 -0
- package/dist/scripts/setup-db.d.ts +28 -0
- package/dist/scripts/setup-db.d.ts.map +1 -0
- package/dist/scripts/setup-db.js +539 -0
- package/dist/scripts/setup-db.js.map +1 -0
- package/dist/scripts/sleep_cycle.d.ts +32 -0
- package/dist/scripts/sleep_cycle.d.ts.map +1 -0
- package/dist/scripts/sleep_cycle.js +452 -0
- package/dist/scripts/sleep_cycle.js.map +1 -0
- package/dist/services/db.d.ts +28 -0
- package/dist/services/db.d.ts.map +1 -0
- package/dist/services/db.js +93 -0
- package/dist/services/db.js.map +1 -0
- package/dist/services/memoryService.d.ts +75 -0
- package/dist/services/memoryService.d.ts.map +1 -0
- package/dist/services/memoryService.js +391 -0
- package/dist/services/memoryService.js.map +1 -0
- package/dist/test-db.d.ts +8 -0
- package/dist/test-db.d.ts.map +1 -0
- package/dist/test-db.js +94 -0
- package/dist/test-db.js.map +1 -0
- package/dist/test-memory.d.ts +2 -0
- package/dist/test-memory.d.ts.map +1 -0
- package/dist/test-memory.js +79 -0
- package/dist/test-memory.js.map +1 -0
- package/openclaw.plugin.json +37 -0
- package/package.json +49 -0
- package/schemas/db.sql +371 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const MemoryOptionsSchema: z.ZodObject<{
|
|
3
|
+
category: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
4
|
+
source_uri: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
5
|
+
volatility: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
6
|
+
low: "low";
|
|
7
|
+
medium: "medium";
|
|
8
|
+
high: "high";
|
|
9
|
+
}>>>;
|
|
10
|
+
is_pointer: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
|
|
11
|
+
token_count: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
12
|
+
tier: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
13
|
+
volatile: "volatile";
|
|
14
|
+
session: "session";
|
|
15
|
+
daily: "daily";
|
|
16
|
+
stable: "stable";
|
|
17
|
+
permanent: "permanent";
|
|
18
|
+
}>>>;
|
|
19
|
+
confidence: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
20
|
+
usefulness_score: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
21
|
+
expires_at: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
|
|
22
|
+
metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type MemoryOptions = z.infer<typeof MemoryOptionsSchema>;
|
|
25
|
+
export declare const StoreMemoryInputSchema: z.ZodObject<{
|
|
26
|
+
content: z.ZodString;
|
|
27
|
+
scope: z.ZodDefault<z.ZodEnum<{
|
|
28
|
+
private: "private";
|
|
29
|
+
shared: "shared";
|
|
30
|
+
global: "global";
|
|
31
|
+
}>>;
|
|
32
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
33
|
+
category: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
34
|
+
source_uri: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
35
|
+
volatility: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
36
|
+
low: "low";
|
|
37
|
+
medium: "medium";
|
|
38
|
+
high: "high";
|
|
39
|
+
}>>>;
|
|
40
|
+
is_pointer: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
|
|
41
|
+
token_count: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
42
|
+
tier: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
43
|
+
volatile: "volatile";
|
|
44
|
+
session: "session";
|
|
45
|
+
daily: "daily";
|
|
46
|
+
stable: "stable";
|
|
47
|
+
permanent: "permanent";
|
|
48
|
+
}>>>;
|
|
49
|
+
confidence: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
50
|
+
usefulness_score: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
51
|
+
expires_at: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
|
|
52
|
+
metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
53
|
+
}, z.core.$strip>>;
|
|
54
|
+
}, z.core.$strip>;
|
|
55
|
+
export declare const UpdateMemoryInputSchema: z.ZodObject<{
|
|
56
|
+
oldMemoryId: z.ZodString;
|
|
57
|
+
newFact: z.ZodString;
|
|
58
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
59
|
+
category: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
60
|
+
source_uri: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
61
|
+
volatility: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
62
|
+
low: "low";
|
|
63
|
+
medium: "medium";
|
|
64
|
+
high: "high";
|
|
65
|
+
}>>>;
|
|
66
|
+
is_pointer: z.ZodNullable<z.ZodOptional<z.ZodBoolean>>;
|
|
67
|
+
token_count: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
68
|
+
tier: z.ZodNullable<z.ZodOptional<z.ZodEnum<{
|
|
69
|
+
volatile: "volatile";
|
|
70
|
+
session: "session";
|
|
71
|
+
daily: "daily";
|
|
72
|
+
stable: "stable";
|
|
73
|
+
permanent: "permanent";
|
|
74
|
+
}>>>;
|
|
75
|
+
confidence: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
76
|
+
usefulness_score: z.ZodNullable<z.ZodOptional<z.ZodNumber>>;
|
|
77
|
+
expires_at: z.ZodNullable<z.ZodOptional<z.ZodDate>>;
|
|
78
|
+
metadata: z.ZodNullable<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>>;
|
|
79
|
+
}, z.core.$strip>>;
|
|
80
|
+
}, z.core.$strip>;
|
|
81
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../schemas/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;iBAW9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAIjC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;iBAIlC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateMemoryInputSchema = exports.StoreMemoryInputSchema = exports.MemoryOptionsSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
exports.MemoryOptionsSchema = zod_1.z.object({
|
|
6
|
+
category: zod_1.z.string().max(50).optional().nullable(),
|
|
7
|
+
source_uri: zod_1.z.string().url().max(512).optional().nullable(),
|
|
8
|
+
volatility: zod_1.z.enum(["low", "medium", "high"]).optional().nullable(),
|
|
9
|
+
is_pointer: zod_1.z.boolean().optional().nullable(),
|
|
10
|
+
token_count: zod_1.z.number().int().optional().nullable(),
|
|
11
|
+
tier: zod_1.z.enum(["volatile", "session", "daily", "stable", "permanent"]).optional().nullable(),
|
|
12
|
+
confidence: zod_1.z.number().min(0).max(1).optional().nullable(),
|
|
13
|
+
usefulness_score: zod_1.z.number().optional().nullable(),
|
|
14
|
+
expires_at: zod_1.z.date().optional().nullable(),
|
|
15
|
+
metadata: zod_1.z.record(zod_1.z.string(), zod_1.z.any()).optional().nullable(),
|
|
16
|
+
});
|
|
17
|
+
exports.StoreMemoryInputSchema = zod_1.z.object({
|
|
18
|
+
content: zod_1.z.string().min(1),
|
|
19
|
+
scope: zod_1.z.enum(["private", "shared", "global"]).default("private"),
|
|
20
|
+
options: exports.MemoryOptionsSchema.optional(),
|
|
21
|
+
});
|
|
22
|
+
exports.UpdateMemoryInputSchema = zod_1.z.object({
|
|
23
|
+
oldMemoryId: zod_1.z.string().uuid(),
|
|
24
|
+
newFact: zod_1.z.string().min(1),
|
|
25
|
+
options: exports.MemoryOptionsSchema.optional(),
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../schemas/validation.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3D,UAAU,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnE,UAAU,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC3F,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1D,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAClD,UAAU,EAAE,OAAC,CAAC,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1C,QAAQ,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAChE,CAAC,CAAC;AAIU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3C,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACjE,OAAO,EAAE,2BAAmB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC9B,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,2BAAmB,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostClaw Persona Bootstrap Script
|
|
3
|
+
*
|
|
4
|
+
* Takes a Markdown file (e.g. SOUL.md, AGENTS.md) and uses the configured LLM
|
|
5
|
+
* to intelligently chunk it into discrete persona rules, then stores each chunk
|
|
6
|
+
* in the agent_persona table with embeddings for semantic retrieval.
|
|
7
|
+
*
|
|
8
|
+
* Usage (via OpenClaw CLI):
|
|
9
|
+
* openclaw postclaw persona <file> [--agent-id <id>]
|
|
10
|
+
*
|
|
11
|
+
* Usage (standalone):
|
|
12
|
+
* node dist/scripts/bootstrap_persona.js <file> [--agent-id <id>]
|
|
13
|
+
*/
|
|
14
|
+
export interface PersonaBootstrapOptions {
|
|
15
|
+
agentId?: string;
|
|
16
|
+
llmUrl?: string;
|
|
17
|
+
llmModel?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function bootstrapPersona(filePath: string, opts?: PersonaBootstrapOptions): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=bootstrap_persona.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap_persona.d.ts","sourceRoot":"","sources":["../../scripts/bootstrap_persona.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA+EH,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,uBAA4B,GACjC,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* PostClaw Persona Bootstrap Script
|
|
4
|
+
*
|
|
5
|
+
* Takes a Markdown file (e.g. SOUL.md, AGENTS.md) and uses the configured LLM
|
|
6
|
+
* to intelligently chunk it into discrete persona rules, then stores each chunk
|
|
7
|
+
* in the agent_persona table with embeddings for semantic retrieval.
|
|
8
|
+
*
|
|
9
|
+
* Usage (via OpenClaw CLI):
|
|
10
|
+
* openclaw postclaw persona <file> [--agent-id <id>]
|
|
11
|
+
*
|
|
12
|
+
* Usage (standalone):
|
|
13
|
+
* node dist/scripts/bootstrap_persona.js <file> [--agent-id <id>]
|
|
14
|
+
*/
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.bootstrapPersona = bootstrapPersona;
|
|
17
|
+
const promises_1 = require("fs/promises");
|
|
18
|
+
const path_1 = require("path");
|
|
19
|
+
const db_js_1 = require("../services/db.js");
|
|
20
|
+
const memoryService_js_1 = require("../services/memoryService.js");
|
|
21
|
+
// ─── LLM Chunking ───────────────────────────────────────────────────────────
|
|
22
|
+
async function chunkMarkdownWithLLM(markdownText, filename, llmUrl, llmModel) {
|
|
23
|
+
const systemPrompt = `
|
|
24
|
+
You are an expert data architect. Your task is to take a raw Markdown configuration file and break it down into discrete, atomic semantic chunks.
|
|
25
|
+
Extract the core rules, behaviors, and instructions.
|
|
26
|
+
|
|
27
|
+
Output your response EXCLUSIVELY as a raw JSON array of objects. Do not use markdown blocks (\`\`\`json).
|
|
28
|
+
Each object must have:
|
|
29
|
+
- "category": A short, unique identifier for this rule (max 50 chars, e.g., "communication_style", "discord_rules", "file_management").
|
|
30
|
+
- "content": The actual text of the rule or instruction.
|
|
31
|
+
- "is_always_active": Boolean. Set to true ONLY IF this is a core identity trait that must be injected into every single prompt. Set to false if it is situational.
|
|
32
|
+
`;
|
|
33
|
+
console.log(` 📄 Asking LLM to semantically chunk ${filename}...`);
|
|
34
|
+
// Use the chat completions endpoint (not embeddings)
|
|
35
|
+
const baseUrl = llmUrl.replace(/\/v1\/?$/, "");
|
|
36
|
+
const res = await fetch(`${baseUrl}/v1/chat/completions`, {
|
|
37
|
+
method: "POST",
|
|
38
|
+
headers: { "Content-Type": "application/json" },
|
|
39
|
+
body: JSON.stringify({
|
|
40
|
+
model: llmModel || "qwen3.5-9b",
|
|
41
|
+
messages: [
|
|
42
|
+
{ role: "system", content: systemPrompt },
|
|
43
|
+
{ role: "user", content: `Here is the file to chunk:\n\n${markdownText}` },
|
|
44
|
+
],
|
|
45
|
+
temperature: 0.1,
|
|
46
|
+
}),
|
|
47
|
+
});
|
|
48
|
+
if (!res.ok) {
|
|
49
|
+
throw new Error(`LLM request failed: ${res.status} ${res.statusText}`);
|
|
50
|
+
}
|
|
51
|
+
const data = await res.json();
|
|
52
|
+
let jsonString = data.choices[0].message.content.trim();
|
|
53
|
+
// Strip <think>...</think> chain-of-thought blocks
|
|
54
|
+
jsonString = jsonString.replace(/<think>[\s\S]*?<\/think>/g, "").trim();
|
|
55
|
+
// Strip markdown code blocks
|
|
56
|
+
if (jsonString.startsWith("```json")) {
|
|
57
|
+
jsonString = jsonString.replace(/^```json\n/, "").replace(/\n```$/, "");
|
|
58
|
+
}
|
|
59
|
+
if (jsonString.startsWith("```")) {
|
|
60
|
+
jsonString = jsonString.replace(/^```\n/, "").replace(/\n```$/, "");
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
return JSON.parse(jsonString);
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
console.error(" ❌ Failed to parse LLM output as JSON:", jsonString.substring(0, 200));
|
|
67
|
+
throw e;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function bootstrapPersona(filePath, opts = {}) {
|
|
71
|
+
const agentId = opts.agentId || "main";
|
|
72
|
+
const llmUrl = opts.llmUrl || db_js_1.LM_STUDIO_URL || "http://127.0.0.1:1234/v1";
|
|
73
|
+
const absPath = (0, path_1.resolve)(filePath);
|
|
74
|
+
const filename = absPath.split("/").pop() || "unknown.md";
|
|
75
|
+
console.log(`\n🦐 PostClaw Persona Bootstrap\n`);
|
|
76
|
+
console.log(` File: ${absPath}`);
|
|
77
|
+
console.log(` Agent: ${agentId}`);
|
|
78
|
+
console.log();
|
|
79
|
+
// 1. Read the file
|
|
80
|
+
let markdownText;
|
|
81
|
+
try {
|
|
82
|
+
markdownText = await (0, promises_1.readFile)(absPath, "utf-8");
|
|
83
|
+
console.log(` ✅ Read ${filename} (${markdownText.length} chars)`);
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
console.error(` ❌ Cannot read file: ${err.message}`);
|
|
87
|
+
throw err;
|
|
88
|
+
}
|
|
89
|
+
// 2. Chunk with LLM
|
|
90
|
+
const chunks = await chunkMarkdownWithLLM(markdownText, filename, llmUrl, opts.llmModel);
|
|
91
|
+
console.log(` ✅ LLM produced ${chunks.length} semantic chunks`);
|
|
92
|
+
// 3. Ensure agent exists
|
|
93
|
+
await (0, memoryService_js_1.ensureAgent)(agentId);
|
|
94
|
+
// 4. Generate embeddings and store each chunk
|
|
95
|
+
const sql = (0, db_js_1.getSql)();
|
|
96
|
+
let stored = 0;
|
|
97
|
+
for (const chunk of chunks) {
|
|
98
|
+
try {
|
|
99
|
+
console.log(` 💾 Storing: "${chunk.category}" (always_active=${chunk.is_always_active})`);
|
|
100
|
+
const embedding = await (0, db_js_1.getEmbedding)(chunk.content);
|
|
101
|
+
await sql.begin(async (tx) => {
|
|
102
|
+
await tx `SELECT set_config('app.current_agent_id', ${agentId}, true)`;
|
|
103
|
+
await tx `
|
|
104
|
+
INSERT INTO agent_persona (
|
|
105
|
+
agent_id, access_scope, category, content, is_always_active, embedding
|
|
106
|
+
) VALUES (
|
|
107
|
+
${agentId}, 'private', ${chunk.category}, ${chunk.content},
|
|
108
|
+
${chunk.is_always_active}, ${JSON.stringify(embedding)}
|
|
109
|
+
)
|
|
110
|
+
ON CONFLICT (agent_id, category)
|
|
111
|
+
DO UPDATE SET
|
|
112
|
+
content = EXCLUDED.content,
|
|
113
|
+
embedding = EXCLUDED.embedding,
|
|
114
|
+
is_always_active = EXCLUDED.is_always_active
|
|
115
|
+
`;
|
|
116
|
+
});
|
|
117
|
+
stored++;
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
console.error(` ⚠️ Failed to store "${chunk.category}": ${err.message}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
console.log(`\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━`);
|
|
124
|
+
console.log(` ✅ Bootstrapped ${stored}/${chunks.length} persona chunks from ${filename}`);
|
|
125
|
+
console.log(` Agent: ${agentId}`);
|
|
126
|
+
console.log(`━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n`);
|
|
127
|
+
}
|
|
128
|
+
// ─── Standalone CLI entry point ──────────────────────────────────────────────
|
|
129
|
+
if (require.main === module) {
|
|
130
|
+
const args = process.argv.slice(2);
|
|
131
|
+
const file = args.find((a) => !a.startsWith("--"));
|
|
132
|
+
function getArg(name) {
|
|
133
|
+
const idx = args.indexOf(name);
|
|
134
|
+
if (idx === -1)
|
|
135
|
+
return undefined;
|
|
136
|
+
return args[idx + 1];
|
|
137
|
+
}
|
|
138
|
+
if (!file) {
|
|
139
|
+
console.log("Usage: node dist/scripts/bootstrap_persona.js <file.md> [--agent-id <id>]");
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
bootstrapPersona(file, {
|
|
143
|
+
agentId: getArg("--agent-id"),
|
|
144
|
+
llmUrl: getArg("--llm-url"),
|
|
145
|
+
llmModel: getArg("--llm-model"),
|
|
146
|
+
})
|
|
147
|
+
.then(() => process.exit(0))
|
|
148
|
+
.catch(() => process.exit(1));
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=bootstrap_persona.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap_persona.js","sourceRoot":"","sources":["../../scripts/bootstrap_persona.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap_tools.d.ts","sourceRoot":"","sources":["../../scripts/bootstrap_tools.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const postgres_1 = __importDefault(require("postgres"));
|
|
7
|
+
const promises_1 = require("fs/promises");
|
|
8
|
+
const db_js_1 = require("../services/db.js");
|
|
9
|
+
const sql = (0, postgres_1.default)(db_js_1.POSTCLAW_DB_URL);
|
|
10
|
+
const AGENT_ID = process.env.AGENT_ID || "default_agent";
|
|
11
|
+
// The tools we ALWAYS want in the payload (handled by the pruner)
|
|
12
|
+
const CORE_TOOLS = ["read", "write", "edit", "exec", "process", "session_status"];
|
|
13
|
+
async function getEmbedding(text) {
|
|
14
|
+
const res = await fetch(`${db_js_1.LM_STUDIO_URL}/v1/embeddings`, {
|
|
15
|
+
method: "POST",
|
|
16
|
+
headers: { "Content-Type": "application/json" },
|
|
17
|
+
body: JSON.stringify({ input: text, model: "text-embedding-nomic-embed-text-v2-moe" }),
|
|
18
|
+
});
|
|
19
|
+
const data = await res.json();
|
|
20
|
+
return data.data[0].embedding;
|
|
21
|
+
}
|
|
22
|
+
async function bootstrapTools(promptFilePath) {
|
|
23
|
+
try {
|
|
24
|
+
const rawData = await (0, promises_1.readFile)(promptFilePath, "utf-8");
|
|
25
|
+
const promptJson = JSON.parse(rawData);
|
|
26
|
+
if (!promptJson.tools || !Array.isArray(promptJson.tools)) {
|
|
27
|
+
console.log("No tools array found in the provided JSON.");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
// Filter out the core tools, we only want to store the heavy/situational ones
|
|
31
|
+
const situationalTools = promptJson.tools.filter((t) => !CORE_TOOLS.includes(t.function.name));
|
|
32
|
+
console.log(`[BOOTSTRAP] Found ${situationalTools.length} situational tools to store.`);
|
|
33
|
+
for (const tool of situationalTools) {
|
|
34
|
+
const toolName = tool.function.name;
|
|
35
|
+
// Embed the name + description so semantic search can find it based on user intent
|
|
36
|
+
const embedText = `${toolName}: ${tool.function.description}`;
|
|
37
|
+
console.log(`[DB] Generating embedding for tool: ${toolName}...`);
|
|
38
|
+
const embedding = await getEmbedding(embedText);
|
|
39
|
+
await sql.begin(async (tx) => {
|
|
40
|
+
await tx `SELECT set_config('app.current_agent_id', ${AGENT_ID}, true)`;
|
|
41
|
+
await tx `
|
|
42
|
+
INSERT INTO context_environment (
|
|
43
|
+
agent_id, access_scope, tool_name, context_data, embedding
|
|
44
|
+
) VALUES (
|
|
45
|
+
${AGENT_ID}, 'global', ${toolName}, ${JSON.stringify(tool)}, ${JSON.stringify(embedding)}
|
|
46
|
+
)
|
|
47
|
+
ON CONFLICT (agent_id, tool_name) DO UPDATE SET
|
|
48
|
+
context_data = EXCLUDED.context_data,
|
|
49
|
+
embedding = EXCLUDED.embedding;
|
|
50
|
+
`;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
console.log("[DONE] Tools bootstrapped to database successfully.");
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error("Bootstrap Error:", err);
|
|
57
|
+
}
|
|
58
|
+
finally {
|
|
59
|
+
await sql.end();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
const targetFile = process.argv[2];
|
|
63
|
+
if (targetFile)
|
|
64
|
+
bootstrapTools(targetFile);
|
|
65
|
+
else
|
|
66
|
+
console.log("Usage: node scripts/bootstrap_tools.js <path_to_debug_prompt.json>");
|
|
67
|
+
//# sourceMappingURL=bootstrap_tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap_tools.js","sourceRoot":"","sources":["../../scripts/bootstrap_tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostClaw Database Setup Script
|
|
3
|
+
*
|
|
4
|
+
* Fully automated PostgreSQL database bootstrapping for the PostClaw plugin.
|
|
5
|
+
* Creates the database, user, schema, indices, RLS policies, and grants.
|
|
6
|
+
*
|
|
7
|
+
* Usage (via OpenClaw CLI):
|
|
8
|
+
* openclaw postclaw setup [options]
|
|
9
|
+
*
|
|
10
|
+
* Usage (standalone):
|
|
11
|
+
* node dist/scripts/setup-db.js [options]
|
|
12
|
+
*
|
|
13
|
+
* Options:
|
|
14
|
+
* --admin-url <url> Superuser connection string (default: postgres://localhost/postgres)
|
|
15
|
+
* --db-name <name> Database name (default: memorydb)
|
|
16
|
+
* --db-user <user> App user name (default: openclaw)
|
|
17
|
+
* --db-password <pass> App user password (auto-generated if omitted)
|
|
18
|
+
* --skip-config Don't auto-update openclaw.json with the new dbUrl
|
|
19
|
+
*/
|
|
20
|
+
export interface SetupOptions {
|
|
21
|
+
adminUrl?: string;
|
|
22
|
+
dbName?: string;
|
|
23
|
+
dbUser?: string;
|
|
24
|
+
dbPassword?: string;
|
|
25
|
+
skipConfig?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function runSetup(opts?: SetupOptions): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=setup-db.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-db.d.ts","sourceRoot":"","sources":["../../scripts/setup-db.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAqVH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAsB,QAAQ,CAAC,IAAI,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiKrE"}
|