@possumtech/rummy 0.2.5 → 0.2.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/.env.example CHANGED
@@ -11,7 +11,7 @@ PORT=3044
11
11
  # Absolute path, no ~
12
12
  # RUMMY_HOME=/home/ubuntu/.rummy
13
13
 
14
- RUMMY_DB_PATH=./rummy.db
14
+ RUMMY_DB_PATH=rummy.db
15
15
  # SQLite mmap size in MB
16
16
  RUMMY_MMAP_MB=0
17
17
 
package/README.md CHANGED
@@ -22,7 +22,7 @@ Rummy is the only LLM agent service inspired by and dedicated to the memory of f
22
22
  npm i -g @possumtech/rummy
23
23
  cd ~/.rummy
24
24
  cp .env.example .env
25
- vim .env
25
+ vim .env # set up at least one model alias
26
26
  npm start
27
27
  ```
28
28
 
@@ -0,0 +1,22 @@
1
+ import { existsSync, mkdirSync, copyFileSync } from "node:fs";
2
+ import { join, dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { homedir } from "node:os";
5
+
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const packageRoot = join(__dirname, "..");
8
+ const envExample = join(packageRoot, ".env.example");
9
+
10
+ const rummyHome = process.env.RUMMY_HOME || join(homedir(), ".rummy");
11
+
12
+ if (!existsSync(rummyHome)) {
13
+ mkdirSync(rummyHome, { recursive: true });
14
+ }
15
+ for (const dir of ["plugins", "skills", "personas"]) {
16
+ const path = join(rummyHome, dir);
17
+ if (!existsSync(path)) mkdirSync(path, { recursive: true });
18
+ }
19
+
20
+ copyFileSync(envExample, join(rummyHome, ".env.example"));
21
+ console.log(`[RUMMY] Configuration: ${rummyHome}/.env.example`);
22
+ console.log(`[RUMMY] Copy to ${rummyHome}/.env and add your API keys.`);
package/bin/rummy.js CHANGED
@@ -1,35 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- import { existsSync, mkdirSync, copyFileSync } from "node:fs";
4
- import { join, dirname } from "node:path";
3
+ import { existsSync } from "node:fs";
4
+ import { isAbsolute, join, dirname } from "node:path";
5
5
  import { fileURLToPath } from "node:url";
6
6
  import { homedir } from "node:os";
7
7
 
8
8
  const __dirname = dirname(fileURLToPath(import.meta.url));
9
9
  const packageRoot = join(__dirname, "..");
10
- const envExample = join(packageRoot, ".env.example");
11
10
 
12
- // Resolve RUMMY_HOME
13
11
  const rummyHome = process.env.RUMMY_HOME || join(homedir(), ".rummy");
14
- process.env.RUMMY_HOME = rummyHome;
15
-
16
- // Bootstrap ~/.rummy if needed
17
- if (!existsSync(rummyHome)) {
18
- mkdirSync(rummyHome, { recursive: true });
19
- console.log(`[RUMMY] Created ${rummyHome}`);
20
- }
21
- for (const dir of ["plugins", "skills", "personas"]) {
22
- const path = join(rummyHome, dir);
23
- if (!existsSync(path)) mkdirSync(path, { recursive: true });
24
- }
25
12
 
26
- // Keep .env.example in RUMMY_HOME as reference
27
- copyFileSync(envExample, join(rummyHome, ".env.example"));
28
-
29
- // Load defaults from .env.example, then user overrides from ~/.rummy/.env
30
- process.loadEnvFile(envExample);
13
+ // Load defaults, then user overrides
14
+ process.loadEnvFile(join(packageRoot, ".env.example"));
31
15
  const userEnv = join(rummyHome, ".env");
32
16
  if (existsSync(userEnv)) process.loadEnvFile(userEnv);
33
17
 
34
- // Start service
18
+ // Resolve RUMMY_HOME and make DB path absolute relative to it
19
+ process.env.RUMMY_HOME = rummyHome;
20
+ const dbPath = process.env.RUMMY_DB_PATH;
21
+ if (dbPath && !isAbsolute(dbPath)) {
22
+ process.env.RUMMY_DB_PATH = join(rummyHome, dbPath);
23
+ }
24
+
35
25
  await import(join(packageRoot, "service.js"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@possumtech/rummy",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "Relational Unknowns Memory Management Yoke",
5
5
  "keywords": [
6
6
  "llm"
@@ -28,6 +28,7 @@
28
28
  "type": "module",
29
29
  "main": "service.js",
30
30
  "scripts": {
31
+ "postinstall": "node ./bin/postinstall.js",
31
32
  "start": "node --env-file-if-exists=.env.example --env-file-if-exists=.env service.js",
32
33
  "dev": "node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.dev --watch service.js",
33
34
  "debug": "node --env-file-if-exists=.env.example --env-file-if-exists=.env --env-file-if-exists=.env.debug --inspect service.js",
package/service.js CHANGED
@@ -53,7 +53,7 @@ async function main() {
53
53
  await registerPlugins([pluginsDir, userPluginsDir], hooks);
54
54
 
55
55
  // 5. Bootstrap Persistence
56
- const dbPath = process.env.RUMMY_DB_PATH || join(rummyHome, "rummy.db");
56
+ const dbPath = process.env.RUMMY_DB_PATH;
57
57
  const functionsDir = fileURLToPath(new URL("./src/sql/functions", import.meta.url));
58
58
  const sqlFunctions = readdirSync(functionsDir)
59
59
  .filter((f) => f.endsWith(".js") && !f.endsWith(".test.js"))