claude-soul-server 0.1.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/dist/engine/context-assembler.d.ts +3 -0
- package/dist/engine/context-assembler.js +161 -0
- package/dist/engine/context-assembler.js.map +1 -0
- package/dist/engine/exemplar-selector.d.ts +6 -0
- package/dist/engine/exemplar-selector.js +21 -0
- package/dist/engine/exemplar-selector.js.map +1 -0
- package/dist/engine/framework-engine.d.ts +61 -0
- package/dist/engine/framework-engine.js +351 -0
- package/dist/engine/framework-engine.js.map +1 -0
- package/dist/engine/framework-renderer.d.ts +17 -0
- package/dist/engine/framework-renderer.js +161 -0
- package/dist/engine/framework-renderer.js.map +1 -0
- package/dist/engine/framework-seeds.d.ts +2 -0
- package/dist/engine/framework-seeds.js +265 -0
- package/dist/engine/framework-seeds.js.map +1 -0
- package/dist/engine/lesson-store.d.ts +8 -0
- package/dist/engine/lesson-store.js +40 -0
- package/dist/engine/lesson-store.js.map +1 -0
- package/dist/engine/meta-optimizer.d.ts +37 -0
- package/dist/engine/meta-optimizer.js +140 -0
- package/dist/engine/meta-optimizer.js.map +1 -0
- package/dist/engine/prompt-builder.d.ts +31 -0
- package/dist/engine/prompt-builder.js +385 -0
- package/dist/engine/prompt-builder.js.map +1 -0
- package/dist/engine/reflection-runner.d.ts +18 -0
- package/dist/engine/reflection-runner.js +313 -0
- package/dist/engine/reflection-runner.js.map +1 -0
- package/dist/engine/shadow-transform.d.ts +1 -0
- package/dist/engine/shadow-transform.js +41 -0
- package/dist/engine/shadow-transform.js.map +1 -0
- package/dist/engine/signal-extractor.d.ts +14 -0
- package/dist/engine/signal-extractor.js +204 -0
- package/dist/engine/signal-extractor.js.map +1 -0
- package/dist/engine/signal-store.d.ts +5 -0
- package/dist/engine/signal-store.js +56 -0
- package/dist/engine/signal-store.js.map +1 -0
- package/dist/engine/snapshot-manager.d.ts +3 -0
- package/dist/engine/snapshot-manager.js +52 -0
- package/dist/engine/snapshot-manager.js.map +1 -0
- package/dist/engine/state-engine.d.ts +34 -0
- package/dist/engine/state-engine.js +127 -0
- package/dist/engine/state-engine.js.map +1 -0
- package/dist/engine/tension-detector.d.ts +10 -0
- package/dist/engine/tension-detector.js +77 -0
- package/dist/engine/tension-detector.js.map +1 -0
- package/dist/engine/token-budget.d.ts +12 -0
- package/dist/engine/token-budget.js +44 -0
- package/dist/engine/token-budget.js.map +1 -0
- package/dist/hooks/on-stop.d.ts +11 -0
- package/dist/hooks/on-stop.js +153 -0
- package/dist/hooks/on-stop.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +171 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/soul-activate.d.ts +1 -0
- package/dist/tools/soul-activate.js +149 -0
- package/dist/tools/soul-activate.js.map +1 -0
- package/dist/tools/soul-context.d.ts +1 -0
- package/dist/tools/soul-context.js +31 -0
- package/dist/tools/soul-context.js.map +1 -0
- package/dist/tools/soul-evaluate.d.ts +8 -0
- package/dist/tools/soul-evaluate.js +97 -0
- package/dist/tools/soul-evaluate.js.map +1 -0
- package/dist/tools/soul-framework.d.ts +1 -0
- package/dist/tools/soul-framework.js +66 -0
- package/dist/tools/soul-framework.js.map +1 -0
- package/dist/tools/soul-read.d.ts +1 -0
- package/dist/tools/soul-read.js +24 -0
- package/dist/tools/soul-read.js.map +1 -0
- package/dist/tools/soul-reflect.d.ts +1 -0
- package/dist/tools/soul-reflect.js +82 -0
- package/dist/tools/soul-reflect.js.map +1 -0
- package/dist/tools/soul-signal.d.ts +8 -0
- package/dist/tools/soul-signal.js +119 -0
- package/dist/tools/soul-signal.js.map +1 -0
- package/dist/tools/soul-status.d.ts +1 -0
- package/dist/tools/soul-status.js +130 -0
- package/dist/tools/soul-status.js.map +1 -0
- package/dist/tools/soul-write.d.ts +1 -0
- package/dist/tools/soul-write.js +26 -0
- package/dist/tools/soul-write.js.map +1 -0
- package/dist/types/config-types.d.ts +45 -0
- package/dist/types/config-types.js +21 -0
- package/dist/types/config-types.js.map +1 -0
- package/dist/types/learning-types.d.ts +166 -0
- package/dist/types/learning-types.js +2 -0
- package/dist/types/learning-types.js.map +1 -0
- package/dist/util/files.d.ts +20 -0
- package/dist/util/files.js +54 -0
- package/dist/util/files.js.map +1 -0
- package/dist/util/llm.d.ts +6 -0
- package/dist/util/llm.js +76 -0
- package/dist/util/llm.js.map +1 -0
- package/dist/util/tokens.d.ts +1 -0
- package/dist/util/tokens.js +4 -0
- package/dist/util/tokens.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SoulConfig } from "../types/config-types.js";
|
|
2
|
+
export declare const SOUL_DIR: string;
|
|
3
|
+
export declare const DATA_DIR: string;
|
|
4
|
+
export declare const FILES_DIR: string;
|
|
5
|
+
export declare const SNAPSHOTS_DIR: string;
|
|
6
|
+
export declare const REFLECTIONS_DIR: string;
|
|
7
|
+
export declare const FRAMEWORKS_PATH: string;
|
|
8
|
+
export declare const SESSION_LOG_PATH: string;
|
|
9
|
+
export declare const STATE_PATH: string;
|
|
10
|
+
export declare const TENSIONS_PATH: string;
|
|
11
|
+
export declare const EXEMPLARS_PATH: string;
|
|
12
|
+
export declare const LESSONS_PATH: string;
|
|
13
|
+
export declare const META_PATH: string;
|
|
14
|
+
export declare const CONFIG_PATH: string;
|
|
15
|
+
export declare function ensureDirs(): Promise<void>;
|
|
16
|
+
export declare function readJsonSafe<T>(filePath: string, fallback: T): Promise<T>;
|
|
17
|
+
export declare function writeJsonAtomic(filePath: string, data: unknown): Promise<void>;
|
|
18
|
+
export declare function readFileSafe(filePath: string): Promise<string>;
|
|
19
|
+
export declare function loadConfig(): Promise<SoulConfig>;
|
|
20
|
+
export declare function soulFilePath(name: string): string;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import { DEFAULT_CONFIG } from "../types/config-types.js";
|
|
5
|
+
export const SOUL_DIR = path.join(os.homedir(), ".soul");
|
|
6
|
+
export const DATA_DIR = path.join(SOUL_DIR, "data");
|
|
7
|
+
export const FILES_DIR = path.join(SOUL_DIR, "files");
|
|
8
|
+
export const SNAPSHOTS_DIR = path.join(DATA_DIR, "snapshots");
|
|
9
|
+
export const REFLECTIONS_DIR = path.join(SOUL_DIR, "reflections");
|
|
10
|
+
export const FRAMEWORKS_PATH = path.join(DATA_DIR, "frameworks.json");
|
|
11
|
+
export const SESSION_LOG_PATH = path.join(DATA_DIR, "session-log.jsonl");
|
|
12
|
+
export const STATE_PATH = path.join(DATA_DIR, "state.json");
|
|
13
|
+
export const TENSIONS_PATH = path.join(DATA_DIR, "tensions.json");
|
|
14
|
+
export const EXEMPLARS_PATH = path.join(DATA_DIR, "exemplars.json");
|
|
15
|
+
export const LESSONS_PATH = path.join(DATA_DIR, "lessons.json");
|
|
16
|
+
export const META_PATH = path.join(DATA_DIR, "meta.json");
|
|
17
|
+
export const CONFIG_PATH = path.join(SOUL_DIR, "config.json");
|
|
18
|
+
export async function ensureDirs() {
|
|
19
|
+
await fs.mkdir(DATA_DIR, { recursive: true });
|
|
20
|
+
await fs.mkdir(FILES_DIR, { recursive: true });
|
|
21
|
+
await fs.mkdir(SNAPSHOTS_DIR, { recursive: true });
|
|
22
|
+
await fs.mkdir(REFLECTIONS_DIR, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
export async function readJsonSafe(filePath, fallback) {
|
|
25
|
+
try {
|
|
26
|
+
const data = await fs.readFile(filePath, "utf-8");
|
|
27
|
+
return JSON.parse(data);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return fallback;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export async function writeJsonAtomic(filePath, data) {
|
|
34
|
+
const dir = path.dirname(filePath);
|
|
35
|
+
await fs.mkdir(dir, { recursive: true });
|
|
36
|
+
const tmpPath = `${filePath}.tmp.${process.pid}`;
|
|
37
|
+
await fs.writeFile(tmpPath, JSON.stringify(data, null, 2), "utf-8");
|
|
38
|
+
await fs.rename(tmpPath, filePath);
|
|
39
|
+
}
|
|
40
|
+
export async function readFileSafe(filePath) {
|
|
41
|
+
try {
|
|
42
|
+
return await fs.readFile(filePath, "utf-8");
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export async function loadConfig() {
|
|
49
|
+
return readJsonSafe(CONFIG_PATH, DEFAULT_CONFIG);
|
|
50
|
+
}
|
|
51
|
+
export function soulFilePath(name) {
|
|
52
|
+
return path.join(FILES_DIR, name);
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/util/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Call Claude Code CLI in non-interactive mode.
|
|
3
|
+
* Uses existing Claude Code auth — no separate API key needed.
|
|
4
|
+
*/
|
|
5
|
+
export declare function callClaude(prompt: string, model: string, userMessage?: string): Promise<string>;
|
|
6
|
+
export declare function parseLlmJson(raw: string): Record<string, unknown> | null;
|
package/dist/util/llm.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
/**
|
|
3
|
+
* Call Claude Code CLI in non-interactive mode.
|
|
4
|
+
* Uses existing Claude Code auth — no separate API key needed.
|
|
5
|
+
*/
|
|
6
|
+
export async function callClaude(prompt, model, userMessage = "Perform the task described in your system prompt. Respond with ONLY the JSON object. No other text.") {
|
|
7
|
+
const tmpPrompt = `/tmp/soul-prompt-${process.pid}-${Date.now()}.txt`;
|
|
8
|
+
await fs.writeFile(tmpPrompt, prompt, "utf-8");
|
|
9
|
+
const args = [
|
|
10
|
+
"-p", userMessage,
|
|
11
|
+
"--append-system-prompt-file", tmpPrompt,
|
|
12
|
+
"--model", model,
|
|
13
|
+
"--max-turns", "3",
|
|
14
|
+
"--output-format", "text",
|
|
15
|
+
"--no-session-persistence",
|
|
16
|
+
];
|
|
17
|
+
try {
|
|
18
|
+
const { spawn } = await import("node:child_process");
|
|
19
|
+
const result = await new Promise((resolve, reject) => {
|
|
20
|
+
const proc = spawn("claude", args, {
|
|
21
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
22
|
+
env: { ...process.env, NO_COLOR: "1" },
|
|
23
|
+
});
|
|
24
|
+
proc.stdin.end();
|
|
25
|
+
const chunks = [];
|
|
26
|
+
const errChunks = [];
|
|
27
|
+
proc.stdout.on("data", (chunk) => chunks.push(chunk));
|
|
28
|
+
proc.stderr.on("data", (chunk) => errChunks.push(chunk));
|
|
29
|
+
const timer = setTimeout(() => {
|
|
30
|
+
proc.kill();
|
|
31
|
+
reject(new Error("claude CLI timed out after 8 minutes"));
|
|
32
|
+
}, 480_000);
|
|
33
|
+
proc.on("close", (code) => {
|
|
34
|
+
clearTimeout(timer);
|
|
35
|
+
const stdout = Buffer.concat(chunks).toString("utf-8");
|
|
36
|
+
const stderr = Buffer.concat(errChunks).toString("utf-8");
|
|
37
|
+
if (code !== 0 && !stdout.trim()) {
|
|
38
|
+
reject(new Error(`claude CLI exited with code ${code}: ${stderr}`));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
resolve(stdout);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
proc.on("error", (err) => {
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
reject(err);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
return result;
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
await fs.unlink(tmpPrompt).catch(() => { });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function parseLlmJson(raw) {
|
|
56
|
+
let cleaned = raw.trim();
|
|
57
|
+
if (cleaned.startsWith("```")) {
|
|
58
|
+
cleaned = cleaned.replace(/^```(?:json)?\n?/, "").replace(/\n?```$/, "");
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
return JSON.parse(cleaned);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
const match = cleaned.match(/\{[\s\S]*\}/);
|
|
65
|
+
if (match) {
|
|
66
|
+
try {
|
|
67
|
+
return JSON.parse(match[0]);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=llm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/util/llm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function estimateTokens(content: string): number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/util/tokens.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "claude-soul-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Self-improving learning engine for Claude Code — persistent identity, cross-session memory, and evolving cognitive frameworks",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"claude-soul-server": "dist/index.js"
|
|
10
|
+
},
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"start": "node dist/index.js",
|
|
15
|
+
"test": "vitest run",
|
|
16
|
+
"test:watch": "vitest"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"claude",
|
|
20
|
+
"claude-code",
|
|
21
|
+
"mcp",
|
|
22
|
+
"learning",
|
|
23
|
+
"persistence",
|
|
24
|
+
"identity",
|
|
25
|
+
"ai"
|
|
26
|
+
],
|
|
27
|
+
"author": "DomDemetz",
|
|
28
|
+
"repository": {
|
|
29
|
+
"type": "git",
|
|
30
|
+
"url": "https://github.com/DomDemetz/claude-soul"
|
|
31
|
+
},
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"files": [
|
|
34
|
+
"dist"
|
|
35
|
+
],
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@modelcontextprotocol/sdk": "^1.12.1"
|
|
38
|
+
},
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@types/node": "^22.0.0",
|
|
41
|
+
"typescript": "^5.7.0",
|
|
42
|
+
"vitest": "^3.0.0"
|
|
43
|
+
}
|
|
44
|
+
}
|